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>
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>
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>
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!