1. ホーム
  2. sql

[解決済み] Group Byクエリでの条件付き合計 MSSQL

2022-02-15 22:38:03

質問

以下のスキーマを持つOrderDetailsテーブルがあります。

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

上記のテーブルを以下のスキーマで新しいテーブルに変換するクエリが必要です。

----------------------------------------------------------------
|  OrderId  |  ItemCount  |  TotalCopyCost  |  TotalFullPrice  |
----------------------------------------------------------------
|  16       |  4          |  150            |  100             |
----------------------------------------------------------------

現在、Order.IdのGroup Byを使用してアイテム数を算出しています。しかし、私は条件付きでCopyCostとFullPriceの値を推測する方法を知りません。

何かお手伝いいただけると幸いです。

お問い合わせ先 フレディ

解決方法は?

試す

SELECT OrderId, 
       COUNT(*) ItemCount,
       SUM(CASE WHEN PriceType = 'CopyCost' THEN Price ELSE 0 END) TotalCopyCost,
       SUM(CASE WHEN PriceType = 'FullPrice' THEN Price ELSE 0 END) TotalFullPrice
  FROM OrderDetails
 GROUP BY OrderId

SQLFiddle