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
Freigeben: 2025-01-08 07:08:40
Original
699 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage