Sql 是否根据另一列中的值更改聚合函数中的值?
我有两个问题。第一个字段仅列出单独的行,如果CANCELCODE为1,则另一个字段为负数,如下所示:Sql 是否根据另一列中的值更改聚合函数中的值?,sql,sql-server,aggregate-functions,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 the
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
有没有办法做到这一点,或者我应该将第一组结果放在临时表中,然后使用它,因为在这一点上,根据需要,值是负/正的 您可以将case语句包装到SUM函数中:-
SUM(CASE WHEN t.CancelCode = '1' THEN t.Quantity * -1 ELSE t.Quantity END) AS Quantity
您可以将case语句包装在SUM函数中:-
SUM(CASE WHEN t.CancelCode = '1' THEN t.Quantity * -1 ELSE t.Quantity END) AS Quantity
这是你想要的吗
SUM(CASE t.CancelCode WHEN '1'
THEN t.Quantity * -1
ELSE t.Quantity
END) AS Quantity,...
这是你想要的吗
SUM(CASE t.CancelCode WHEN '1'
THEN t.Quantity * -1
ELSE t.Quantity
END) AS Quantity,...
使用apply,如果您需要多次使用该用例,那么这会更有效
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
使用apply,如果您需要多次使用该用例,那么这会更有效
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