2016-01-08 85 views
0

我有一個要求,在進行求和時過濾一個特定的行。表結構和數據如下。 enter image description here有條件的WHERE條件SQL腳本

我想除了行WHERE [Reason] = 'Order Placed' AND [No Of Month Old] = 1之外的所有行的列值爲[Gain/Lost]

以下情況下的值將爲-560。

+0

你有3個排,「下訂單」? – christiandev

+0

你到目前爲止嘗試過什麼?似乎所有你需要做的是添加WHERE子句? –

+0

是的。只想省略滿足條件的第一行。 – user1926138

回答

3

你用英語描述你的條件不錯 - 現在你只需要編寫同樣的事情在SQL:

SELECT SUM([Gain/Lost] 
FROM mytable 
WHERE NOT ([Reason] = 'Order Placed' AND [No Of Month Old] = 1) 
1
SELECT UserID, 
     SUM(CASE WHEN [Reason] = 'Order Placed' AND [No Of Month Old] = 1 
       THEN 0 
       ELSE [Gain/Lost] 
      END) 
FROM tt 
GROUP BY UserID 
2
select userid, sum([Gain/Lost]) 
from tablename 
where [Reason] <> 'Order Placed' 
    or [No Of Month Old] <> 1 
group by userid 
1
SELECT SUM([GAIN/LOST]) as 'Gain/Lost' 
FROM YourTable yt 
WHERE REASON <> 'Order Placed' AND [No of Month Old] <> 1 
GROUP BY UserID 
+0

爲什麼HAVING子句沒有集合函數?改爲使用WHERE。另外,它不應該是'[舊月沒有] <> 1'嗎? – jarlh