Maison > base de données > tutoriel mysql > Comment effectuer une sommation conditionnelle dans les requêtes MSSQL Group By ?

Comment effectuer une sommation conditionnelle dans les requêtes MSSQL Group By ?

Barbara Streisand
Libérer: 2025-01-08 07:08:40
original
699 Les gens l'ont consulté

How to Perform Conditional Summation in MSSQL Group By Queries?

Somme conditionnelle avec la clause GROUP BY de MSSQL

Microsoft SQL Server (MSSQL) offre une agrégation flexible des données à l'aide de la clause GROUP BY. Pour effectuer une sommation conditionnelle dans une requête GROUP BY, utilisez l'instruction CASE pour inclure de manière sélective des valeurs dans la somme en fonction de critères spécifiques.

Considérons un OrderDetails tableau avec la structure suivante :

<code>----------------------------------------------------------------
|  OrderId  |  CopyCost  |  FullPrice  |  Price  |  PriceType  |
----------------------------------------------------------------
|  16       |  50        |  100        |  50     |  CopyCost   |
----------------------------------------------------------------
|  16       |  50        |  100        |  100    |  FullPrice  |
----------------------------------------------------------------
|  16       |  50        |  100        |  50     |  CopyCost   |
----------------------------------------------------------------
|  16       |  50        |  100        |  50     |  CopyCost   |
----------------------------------------------------------------</code>
Copier après la connexion

Pour calculer les ItemCount, TotalCopyCost et TotalFullPrice pour chaque OrderId, utilisez cette requête :

<code class="language-sql">SELECT OrderId, 
       COUNT(*) AS ItemCount,
       SUM(CASE WHEN PriceType = 'CopyCost' THEN Price ELSE 0 END) AS TotalCopyCost,
       SUM(CASE WHEN PriceType = 'FullPrice' THEN Price ELSE 0 END) AS TotalFullPrice
FROM OrderDetails
GROUP BY OrderId;</code>
Copier après la connexion

L'instruction CASE dans la fonction SUM() additionne conditionnellement les valeurs Price. Si PriceType est 'CopyCost', le Price est inclus ; sinon, 0 est ajouté. Cela permet d'obtenir des totaux distincts pour « CopyCost » et « FullPrice » par OrderId.

Le résultat serait :

<code>----------------------------------------------------------------
|  OrderId  |  ItemCount  |  TotalCopyCost  |  TotalFullPrice  |
----------------------------------------------------------------
|  16       |  4          |  150            |  100             |
----------------------------------------------------------------</code>
Copier après la connexion

Cela démontre comment les instructions CASE permettent une puissante agrégation conditionnelle au sein des requêtes GROUP BY, fournissant une méthode flexible pour la synthèse et l'analyse des données dans MSSQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal