ホームページ >データベース >mysql チュートリアル >MSSQL Group By クエリで条件付き合計を実行するにはどうすればよいですか?

MSSQL Group By クエリで条件付き合計を実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-08 07:08:40697ブラウズ

How to Perform Conditional Summation in MSSQL Group By Queries?

MSSQL の GROUP BY 句による条件付き合計

Microsoft SQL Server (MSSQL) は、GROUP BY 句を使用した柔軟なデータ集計を提供します。 GROUP BY クエリ内で条件付き合計を実行するには、CASE ステートメントを利用して、特定の基準に基づいて合計に値を選択的に含めます。

次の構造を持つ OrderDetails テーブルを考えてみましょう:

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

ItemCountTotalCopyCostTotalFullPriceOrderId を計算するには、次のクエリを使用します。

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

CASE 関数内の SUM() ステートメントは、条件付きで Price 値を合計します。 PriceType が 'CopyCost' の場合、Price が含まれます。それ以外の場合は 0 が追加されます。これにより、OrderId ごとに「CopyCost」と「FullPrice」の合計を個別に計算できるようになります。

出力は次のようになります:

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

これは、CASE ステートメントが GROUP BY クエリ内で強力な条件付き集計を可能にし、MSSQL でのデータの要約と分析のための柔軟な方法を提供する方法を示しています。

以上がMSSQL Group By クエリで条件付き合計を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。