对条件为

时间:2016-08-09 12:51:00

标签: sql sql-server

我正在尝试创建像这样的查询

select sum(t1.quantity) - sum(t2.quantity * SELECT CASE WHEN (condition on t3.status) THEN 1 ELSE 0 END) ),0)
from table1 t1
inner join table2 t2 on t1.key = t2.key
inner join table3 t3 on t2.key = t3.key

基本上它所做的是在t2.quantus列的第一个和第二个之间的减法,这些行在列t3.status上具有条件(例如t3.status> 2)。

但我得到了

  

无法对包含的表达式执行聚合函数   聚合或子查询。

有没有办法在不添加额外连接或其他查询的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

我认为这就是你要做的。使用select后,您不再需要case,因为t3已加入。{/ p>

select sum(t1.quantity) - sum(t2.quantity * CASE WHEN t3.status > 2 THEN 1 ELSE 0 END) 
from table1 t1
inner join table2 t2 on t1.key = t2.key
inner join table3 t3 on t2.key = t3.key