
Explanation:

包括的かつ詳細な説明
年別および製品別の注文数量を集計し、各行に全製品の年間合計値も表示するクエリを作成する必要があります。
ステップ1:クエリに必要な情報
SalesOrderDetail.ModifiedDateから年を抽出します。
製品テーブルと結合して製品名を取得します。
SUM(OrderQty)で集計します。
年別および製品別にグループ化されたデータを返します。さらに、年ごとに小計行(全製品を合計したもの)を追加します。
ステップ2:SELECT句を評価する
年を抽出するには、次の方法を使用する必要があります。
YEAR(so.ModifiedDate) AS OrderDate
これは、ModifiedDate列をグループ化のために年値に変換します。
ステップ3:GROUP BYオプションを評価する
CUBE(YEAR, P.Name) # 年合計、製品合計、および総計のすべての組み合わせを生成します。組み合わせが多すぎるため、不要です。
セットのグループ化 # 結果は得られるが、セットを明示的にリストする必要がある。直接的ではない。
ROLLUP(YEAR, P.Name) # (年、製品名)でグループ化し、年ごとの小計を生成します。まさに必要なものです。
年のみ # 年ごとにのみグループ化し、製品ごとの内訳を失います。
正しい: ROLLUP(YEAR(so.ModifiedDate), P.Name)
ステップ4:クエリ完了
選択
YEAR(so.ModifiedDate) AS OrderDate、
p.名前、
SUM(so.OrderQty) AS OrderQty
dbo.SalesOrderDetail から
INNER JOIN dbo.Product p
ON p.ProductID = so.ProductID
GROUP BY ROLLUP(YEAR(so.ModifiedDate), p.Name);
これが効果的な理由
YEAR(so.ModifiedDate) は、グループ化のために年を抽出します。
ROLLUP(YEAR, P.Name) は、製品レベルの合計と年間小計の両方を提供します。
「各行にすべての製品の年間注文数量の合計を含める」という要件を満たします。 T-SQL の GROUP BY ROLLUP と Microsoft Fabric ウェアハウスの集計関数を参照してください。