如何使用SQL case语句获取和值
我使用这里显示的查询来计算财务目标第一对账单(expd)的总和,它显示的是如何使用SQL case语句获取和值,sql,sql-server,Sql,Sql Server,我使用这里显示的查询来计算财务目标第一对账单(expd)的总和,它显示的是socode不等于29和42的总和。但是 第二条语句我只想求和,其中socode=42和29和20,但它的值为0.00,而29和42有自己的值 select isnull(CONVERT(DECIMAL(10, 2), SUM(CASE WHEN SoCode <> 42 and SoCode <> 29 and SoCode <> 20
socode
不等于29和42的总和。但是
第二条语句我只想求和,其中socode=42
和29和20,但它的值为0.00,而29和42有自己的值
select
isnull(CONVERT(DECIMAL(10, 2),
SUM(CASE WHEN SoCode <> 42 and SoCode <> 29 and SoCode <> 20
THEN (Financialtarget)/100000 ELSE 0 END)), 0) as expd,
isnull(CONVERT(DECIMAL(10, 2),
SUM(CASE WHEN (SoCode = 29) and (SoCode = 42)
THEN (Financialtarget)/100000 ELSE 0 END)), 0) as expd1
from
MPR
where
month <= 7
and mpryear = '2014-15'
and Division = '12'
选择
isnull(转换为十进制(10,2),
总和(SoCode 42、SoCode 29和SoCode 20时的情况
然后(Financialtarget)/100000 ELSE 0 END),0)作为扩展,
isnull(转换为十进制(10,2),
总和(当(SoCode=29)和(SoCode=42)时的情况)
然后(Financialtarget)/100000 ELSE 0 END),0)作为expd1
从…起
MPR
哪里
月expd1
为0,因为条件(SoCode=29)和(SoCode=42)
总是错误的。它应该使用或类似(SoCode=29)或(SoCode=42)或(SoCode=20)的而不是使用和
SELECT
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN SoCode <> 42 AND SoCode <> 29 AND SoCode <> 20
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd,
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN (SoCode = 29) OR (SoCode = 42) OR (SOCode = 20)
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd1
FROM MPR
WHERE month <= 7 AND mpryear = '2014-15' AND Division = '12'
expd1
为0,因为条件(SoCode=29)和(SoCode=42)
总是错误的。它应该使用或类似(SoCode=29)或(SoCode=42)或(SoCode=20)的而不是使用和
SELECT
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN SoCode <> 42 AND SoCode <> 29 AND SoCode <> 20
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd,
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN (SoCode = 29) OR (SoCode = 42) OR (SOCode = 20)
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd1
FROM MPR
WHERE month <= 7 AND mpryear = '2014-15' AND Division = '12'
expd1
为0,因为条件(SoCode=29)和(SoCode=42)
总是错误的。它应该使用或类似(SoCode=29)或(SoCode=42)或(SoCode=20)的而不是使用和
SELECT
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN SoCode <> 42 AND SoCode <> 29 AND SoCode <> 20
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd,
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN (SoCode = 29) OR (SoCode = 42) OR (SOCode = 20)
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd1
FROM MPR
WHERE month <= 7 AND mpryear = '2014-15' AND Division = '12'
expd1
为0,因为条件(SoCode=29)和(SoCode=42)
总是错误的。它应该使用或类似(SoCode=29)或(SoCode=42)或(SoCode=20)的而不是使用和
SELECT
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN SoCode <> 42 AND SoCode <> 29 AND SoCode <> 20
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd,
ISNULL(CONVERT(DECIMAL(10,2),
SUM(CASE WHEN (SoCode = 29) OR (SoCode = 42) OR (SOCode = 20)
THEN (Financialtarget)/100000
ELSE 0 END)),0) AS expd1
FROM MPR
WHERE month <= 7 AND mpryear = '2014-15' AND Division = '12'
请格式化代码。请格式化代码。请格式化代码。请格式化代码。请格式化代码。不客气,如果我的答案能解决你的问题,请接受。更多详情请参见此处:不客气,如果我的回答能解决您的问题,请接受。更多详情请参见此处:不客气,如果我的回答能解决您的问题,请接受。更多详情请参见此处:不客气,如果我的回答能解决您的问题,请接受。有关更多详细信息,请参见此处: