读书人

case when.then.请问

发布时间: 2012-02-11 09:51:34 作者: rapoo

case when...then...请教
(CASE WHEN P.Payer = '113001 '
THEN SELECT SUM(NVL(AcceptPrice,0)) FROM IBS_T_BID_SURROGATE AGT WHERE AGT.PROJECT_ID = P.PROJID
ELSE
SELECT SUM(NVL(BC.ReceiveChargePrice,0)) FROM IBS_T_BID_BIDCHARGE BC
WHERE BC.PROJID = P.PROJID
END
) AS SER_AMOUNT,
上面是查询语句中的一段 但是有问题 报错缺少表达式 then后面可不可以是一个查询语句呢?

[解决办法]
(CASE WHEN P.Payer = '113001 '
THEN (SELECT SUM(isnull(AcceptPrice,0)) FROM IBS_T_BID_SURROGATE AGT WHERE AGT.PROJECT_ID = P.PROJID)
ELSE
(SELECT SUM(isnull(BC.ReceiveChargePrice,0)) FROM IBS_T_BID_BIDCHARGE BC
WHERE BC.PROJID = P.PROJID)
END
) AS SER_AMOUNT,

[解决办法]
--这样试下
(CASE WHEN P.Payer = '113001 '
THEN (SELECT SUM(NVL(AcceptPrice,0)) FROM IBS_T_BID_SURROGATE AGT WHERE AGT.PROJECT_ID = P.PROJID)
ELSE
(SELECT SUM(NVL(BC.ReceiveChargePrice,0)) FROM IBS_T_BID_BIDCHARGE BC
WHERE BC.PROJID = P.PROJID)
END
) AS SER_AMOUNT
[解决办法]
(CASE WHEN P.Payer = '113001 '
THEN (SELECT SUM(isnull(AcceptPrice,0)) FROM IBS_T_BID_SURROGATE AGT WHERE AGT.PROJECT_ID = P.PROJID
ELSE
(SELECT SUM(isnull(BC.ReceiveChargePrice,0)) FROM IBS_T_BID_BIDCHARGE BC
WHERE BC.PROJID = P.PROJID
END
) AS SER_AMOUNT,
[解决办法]
改:then 後面可以跟sql句的
不要用括括起


(CASE WHEN P.Payer = '113001 '
THEN (SELECT SUM(NVL(AcceptPrice,0)) FROM IBS_T_BID_SURROGATE AGT WHERE AGT.PROJECT_ID = P.PROJID)
ELSE
(SELECT SUM(NVL(BC.ReceiveChargePrice,0)) FROM IBS_T_BID_BIDCHARGE BC
WHERE BC.PROJID = P.PROJID)
END
) AS SER_AMOUNT,
上面是查询语句中的一段 但是有问题 报错缺少表达式 then后面可不可以是一个查询语句呢?

读书人网 >SQL Server

热点推荐