我有一张像这样的表:
ID | Description | Account | DepAccount | Value
----------------------------------------------------------
0 | Something | 110 | 0 | 500,50
1 | Something x | 0 | 110 | -320,95
现在我需要一个查询来对值进行求和,但它存在问题。
就像在示例中一样,如果帐户是110,那很好,如果DepAccount
是110,我需要反转这个值,所以我总和320,95而不是-320,95
因此查询应该返回值:821,45
类似于:
SELECT SUM(Value) As Total
FROM Table
WHERE Account = 110 OR DepAccount = 110 WHERE etc...
谁可以提供帮助?我正在使用SQL Server 2008 Express Edition
答案 0 :(得分:2)
样本集很小,所以你有点不清楚你要做什么,但听起来像这样:
SELECT
sum(case
when Account = 110 then Value
when DepAccount = 100 then -1 * Value
else 0
end)
from MyTable
假设“反转”意味着“反转符号”。如果您只需要使阴性为阳性,请使用
SELECT
sum(case
when Account = 110 then Value
when DepAccount = 100 then abs(Value)
else 0
end)
from MyTable
答案 1 :(得分:0)
SELECT SUM(ABS(Value)) As Total FROM Table WHERE Account = 110 OR DepAccount = 110 WHERE etc
应该能满足您的需求。 abs函数返回数字的绝对值。
答案 2 :(得分:0)
也许我过于简单了,但你能做到这一点:
select sum(abs(Value)) as Total
from Table
where Account = 110
or DepAccount = 110
答案 3 :(得分:0)
假设Account和DepAccount中的一个始终为0,则可以编写
SELECT
CASE
WHEN DepAccount = 0 THEN Account
WHEN Account = 0 THEN DepAccount
END AS acct,
SUM(abs(Value)) AS Total
FROM Table
GROUP BY
CASE
WHEN DepAccount = 0 THEN Account
WHEN Account = 0 THEN DepAccount
END