Heim >Datenbank >MySQL-Tutorial >Wie führe ich eine bedingte Summierung in MSSQL-Gruppierungsabfragen durch?

Wie führe ich eine bedingte Summierung in MSSQL-Gruppierungsabfragen durch?

Barbara Streisand
Barbara StreisandOriginal
2025-01-08 07:08:40721Durchsuche

How to Perform Conditional Summation in MSSQL Group By Queries?

Bedingte Summierung mit der GROUP BY-Klausel von MSSQL

Microsoft SQL Server (MSSQL) bietet eine flexible Datenaggregation mithilfe der GROUP BY-Klausel. Um eine bedingte Summierung innerhalb einer GROUP BY-Abfrage durchzuführen, nutzen Sie die CASE-Anweisung, um basierend auf bestimmten Kriterien selektiv Werte in die Summe einzubeziehen.

Betrachten Sie eine OrderDetails Tabelle mit der folgenden Struktur:

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

Um ItemCount, TotalCopyCost und TotalFullPrice für jedes OrderId zu berechnen, verwenden Sie diese Abfrage:

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

Die CASE-Anweisung innerhalb der SUM()-Funktion summiert bedingt Price-Werte. Wenn PriceType „CopyCost“ ist, ist Price enthalten; andernfalls wird 0 hinzugefügt. Dies ermöglicht separate Summen für „CopyCost“ und „FullPrice“ pro OrderId.

Die Ausgabe wäre:

<code>----------------------------------------------------------------
|  OrderId  |  ItemCount  |  TotalCopyCost  |  TotalFullPrice  |
----------------------------------------------------------------
|  16       |  4          |  150            |  100             |
----------------------------------------------------------------</code>

Dies zeigt, wie CASE-Anweisungen eine leistungsstarke bedingte Aggregation innerhalb von GROUP BY-Abfragen ermöglichen und so eine flexible Methode zur Datenzusammenfassung und -analyse in MSSQL bereitstellen.

Das obige ist der detaillierte Inhalt vonWie führe ich eine bedingte Summierung in MSSQL-Gruppierungsabfragen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn