2012-10-12 39 views
1

我試圖做一個使用「CASE」操作的select語句,但它說我的條件(abc.reason)是無效的,因爲它不包含在集合函數或GROUP BY子句。我試着將它添加到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 - - - - 空 - - 1

當我真的需要的結果:

ID ---- ----- VALUE COU NTALL

ID1 - - 1000 - - - - - 23

ID2 - - - - 232 - - - 17

ID3 - - - - 113 - - - 3

預先感謝您!!!!

回答

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 
+0

你好理查德,我有這個解決方案之前,而是我用SUM(數量*價格)之和(情況下....)的內部,這引發了錯誤。但是,這工作,非常感謝你:)! – user1736733

+0

我刪除了DISTINCT,因爲GROUP BY已經做了同樣的事情。 – RichardTheKiwi

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 
+0

糾正我,如果我錯了,但這是完全一樣的上述答案?不管謝謝你:)! – user1736733