1

「CASE」操作を使用してselectステートメントを実行しようとしていますが、集計関数またはGROUP BY句のいずれにも含まれていないため、条件(abc.reason)が無効であると表示されます。GROUP BY句に追加しようとしましたが、結果テーブルに不要な行が作成されています。任意のヒント?

SELECT

DISTINCT ID 
,(CASE WHEN reason = 4 THEN null ELSE SUM(quantity*price) END) AS Value
,COUNT(*) AS CountAll

FROM TransactionsDB

GROUP BY ID

ORDER BY ID DESC

GROUP BY句をに変更するとGROUP BY ID, reason、結果は次のようになります。

ID----値-----COUNTALL

id1 ---- 1000 ---- ---- -22

id1 --- --NULL --- --- 1

id2 --- --- 232 --- --17

id3 --- --- 113 --- --2

id3 --- --- NULL --- 1

本当に結果が必要な場合:

ID----値-----COUNTALL

id1 ---- 1000 ---- ---- -23

id2 --- --- 232 --- --17

id3 --- --- 113 --- --3

前もって感謝します!!!!

4

2 に答える 2

0
SELECT ID 
,SUM(CASE WHEN reason = 4 THEN 0 ELSE quantity*price END) AS Value
,COUNT(*) AS CountAll
FROM TransactionsDB
GROUP BY ID
ORDER BY ID DESC
于 2012-10-12T00:14:42.417 に答える
0
SELECT DISTINCT ID,
    SUM(CASE WHEN reason = 4 THEN 0 ELSE quantity*price END) AS Value,
    COUNT(*) AS CountAll
FROM TransactionsDB
GROUP BY ID
ORDER BY ID DESC
于 2012-10-12T00:15:09.163 に答える