2016-01-08 40 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