根据另一列中的值更改聚合函数中的值?

时间:2019-02-12 22:01:33

标签: sql sql-server aggregate-functions

我有两个查询。第一个只是列出各个行,如果CANCELCODE为1,则使另一个字段为负,如下所示:

  CASE t.CancelCode
       WHEN '1'
       THEN t.Quantity * -1
       ELSE t.Quantity
   END AS Quantity,...

第二个查询求和总计,但是如何检查上述条件呢?

     SUM(t.Quantity) AS Quantity, --case t.cancelcode is 1 then negative the value

是否有办法做到这一点?还是应该将第一组结果放在临时表中,然后使用该表,因为此时该值是负值还是正值?

3 个答案:

答案 0 :(得分:3)

您可以将case语句包装在SUM函数中:-

index.js

答案 1 :(得分:1)

这是您想要的吗?

import MyLib from './MyLib'

// later on

MyLib.processArray()
MyLib.processString()

答案 2 :(得分:1)

使用套用,如果您需要多次使用这种情况,这会更有效率

select sum(a.Quantity)
from yourtable t
cross apply (
select CASE t.CancelCode
       WHEN '1'
       THEN t.Quantity * -1
       ELSE t.Quantity
   END AS Quantity
) a