SQL文を作成しているのですが、思い通りに抽出が行えていないので質問します。
実現したい条件は下記のとおりです。
以下のZZZテーブルでLine1とLine2が重複している行がある場合、Noが最も小さい1行のみを出力する。その際、QtyとTaxを、出力する1行に加算してまとめる。
画像のテーブルの場合であれば、以下のような出力結果にしたいです。
(ID0001と、ID0002はLine1とLine2の値が重複しているため、
ID0001のみを出力し、Qtyを10+11=21、Taxを100+110=210で出力。)
試したこと
どうにも書き方がよくわからず、インターネットで調べながら以下のようなコードを記入してみました。
集計が HAVING 句または選択リスト内のサブクエリにある場合、および集計する列が外部参照の場合にだけ、WHERE 句に集計を含めることができます。
というようなエラーが発生しました。
SELECT ID,Line1,Line2,Line3,Line4,Product,Q,Tax,Date,Bikou1,Bikou2
FROM ZZZ t2
WHERE NOT EXISTS ( SELECT t2.ID,t2.Line1,t2.Line2,t2.Line3,t2.Line4,t2.Product,SUM(t2.Qty),SUM(t2.Tax),t2.Date,t2.Bikou1,t2.Bikou2,SUM(t2.Price)
FROM ZZZ t1
WHERE t2.Line1 =t1.Line1 AND (t2.ID) > (t1.ID) AND t2.Line2 = t1.Line2 AND (t2.ID) > (t1.ID))
上記条件の解決をどうかよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
SQLServer Express(2017)
回答3件
あなたの回答
tips
プレビュー