以下のテーブル構造を考慮して
ADateTime AGroupName ARecordType AValue
========== ========== =========== ======
2013-01-01 Ninjas A 10
2013-01-01 Ninjas B 5
2013-01-01 Ninjas C 2
2013-01-01 Ninjas D 1
2013-01-01 Ninjas E 0
2013-01-01 Clowns A 8
2013-01-01 Clowns B 4
2013-01-01 Clowns E 1
2013-01-08 Ninjas A 7
2013-01-08 Ninjas B 3
2013-01-08 Ninjas E 1
2013-01-08 Clowns A 4
2013-01-08 Clowns B 3
ADateTime と AGroupName の組み合わせごとに 2 つの値 (CalcVal1 と CalcVal2) を計算する必要があります。つまり、ADateTime と AGroupName で GROUP BY する必要があります (これは簡単な部分です)。
注: サンプル データからわかるように、特定のグループ化に対して特定のレコード タイプが存在するという保証はありません。そのため、必要に応じて外部結合と合体を行ってください。
私が理解しようとしているのは、ARecordType の値に応じて CalcVal1 と CalcVal2 を計算する方法です。以下は、CalcVal1 と CalcVal2 の仕様です...
- CalcVal1 は (ARecordType='A' の AValue の合計) です。
- CalcVal2 は (ARecordType IN ('B','C') の AValue の合計) MINUS (ARecordType IN ('D','E') の AValue の合計) です。
私が期待する結果セットは
ADateTime AGroupName CalcVal1 CalcVal2
========== ========== ======== ========
2013-01-01 Ninjas 10 6
2013-01-01 Clowns 8 3
2013-01-08 Ninjas 7 2
2013-01-08 Clowns 4 3
SQL-Server 2005 で T-SQL を使用しています。SQL またはストアド プロシージャを歓迎します。TIA、私は年を取りすぎており、CTO に任命される時が来ました。(;-D)