私のデータを合計するには次のようになります。最初のケースでSQL条件付きのグループ化と
|cat |subcat |amount|
---------------------
|A |1 |123 |
|A |2 |456 |
|B |1 |222 |
|B |2 |333 |
、私は猫とSUBCATによって合計する必要があります。簡単:
SELECT cat, subcat, sum(amount) FROM data GROUP BY cat, subcat
次に、特定の猫にとって、その量を特定のサブキャットに「プッシュ」する必要があるという高度な要件があります。これは、別のconfig
のテーブルに格納することができます。
|cat |subcat|
-------------
|B |1 |
これは、すべてのcat='B'
行について、量はsubcat=1
として扱われるべきであることを私に伝えます。さらに、cat='B' AND subcat <> 1
の場合、金額はゼロとして報告する必要があります。つまり、必要な結果は次のとおりです。
|cat |subcat|amount|
|A |1 |123 |
|A |2 |456 |
|B |1 |555 |
|B |2 |0 |
データテーブルを更新できません。もちろん、私はSELECT ... INTO
のprocでデータを修正することができますが、1ヒットで実行できるかどうかは疑問です。
SELECT data.cat,
ISNULL(config.subcat, data.subcat),
SUM(amount)
FROM data
LEFT OUTER JOIN config ON (data.cat = config.cat)
GROUP BY data.cat, ISNULL(config.subcat, data.subcat)
を...しかし、ゼロとしてcat:B, subcat:2
を表示するには、私の第二の要件を失敗します。
私はとかなり近い得ることができます。
可能ですか?
私は要件で少し混乱しているが、私はこれを考えるのSybase IQ 12.5(すなわち旧T-SQLが、私は役に立つかもしれない疑いcase
文を、持っていているに)
私はかなりこの部分に従っていません:「これは、すべての猫= 『B』の行について、量は= 1 SUBCATとして扱われるべきであることを私に告げるさらに、どこの猫= 'B。 'AND subcat <> 1量はゼロとして報告されるべきです。最初の文から、[B、2]は333ではなく222の量として扱われなければならないが、2番目の文[B、2]は333ではなく0として扱われるべきである。ルールが適用されたときに処理する必要がありますか? – Glenn