Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Penjumlahan Bersyarat dalam Kumpulan MSSQL Mengikut Pertanyaan?

Bagaimana untuk Melakukan Penjumlahan Bersyarat dalam Kumpulan MSSQL Mengikut Pertanyaan?

Barbara Streisand
Barbara Streisandasal
2025-01-08 07:08:40694semak imbas

How to Perform Conditional Summation in MSSQL Group By Queries?

Penjumlahan Bersyarat dengan MSSQL's GROUP BY Clause

Microsoft SQL Server (MSSQL) menawarkan pengagregatan data yang fleksibel menggunakan klausa GROUP BY. Untuk melaksanakan penjumlahan bersyarat dalam pertanyaan GROUP BY, manfaatkan pernyataan CASE untuk memasukkan nilai secara terpilih dalam jumlah berdasarkan kriteria tertentu.

Pertimbangkan OrderDetails jadual dengan struktur berikut:

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

Untuk mengira ItemCount, TotalCopyCost dan TotalFullPrice bagi setiap OrderId, gunakan pertanyaan ini:

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

Pernyataan CASE dalam fungsi SUM() menjumlahkan nilai Price secara bersyarat. Jika PriceType ialah 'CopyCost', Price disertakan; jika tidak, 0 ditambah. Ini membolehkan jumlah berasingan untuk 'Kos Salin' dan 'Harga Penuh' setiap OrderId.

Outputnya ialah:

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

Ini menunjukkan bagaimana pernyataan CASE mendayakan pengagregatan bersyarat yang berkuasa dalam GROUP BY pertanyaan, menyediakan kaedah yang fleksibel untuk ringkasan dan analisis data dalam MSSQL.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Penjumlahan Bersyarat dalam Kumpulan MSSQL Mengikut Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn