Sql server 带有sumsql的CASE语句
有人能帮我找出下面CASE语句的正确语法吗?这是我创建的一个视图的一部分,当费用描述中有“Return”时,返回价格是jobs表中计算成本的一半。它说关键字ELSE的语法不正确。提前谢谢 ` ` 以上是完整的查询。这应该可以:Sql server 带有sumsql的CASE语句,sql-server,case,Sql Server,Case,有人能帮我找出下面CASE语句的正确语法吗?这是我创建的一个视图的一部分,当费用描述中有“Return”时,返回价格是jobs表中计算成本的一半。它说关键字ELSE的语法不正确。提前谢谢 ` ` 以上是完整的查询。这应该可以: DECLARE @output int select @output= count (*) from jobcharge jobc inner join charge on charge.chargeid = jobc.chargeid
DECLARE @output int
select @output= count (*) from jobcharge jobc inner join charge
on charge.chargeid = jobc.chargeid
where jobc.jobid = jobs.jobid and charge.description like '%return%'
CASE WHEN @output > 0 THEN SUM(JOBS.CALCULATEDCOST/2)
ELSE '0.00' END as "RETURN PRICE",
这似乎是一个不完整的问题。
所以我假设一定有一个名为“JOBS”的表。
为此,请尝试以下内容
SELECT
CASE WHEN (SELECT COUNT (*)FROM JOBCHARGE JOBC
INNER JOIN CHARGE ON CHARGE.CHARGEID = JOBC.CHARGEID
WHERE JOBC.JOBID = JOBS.JOBID
AND CHARGE.DESCRIPTION LIKE '%return%') > 0
THEN
SUM(JOBS.CALCULATEDCOST/2)
ELSE '0.00'
END as "RETURN PRICE" FROM JOBS
我认为您不需要几行的总和,而只需要一个值
CASE WHEN EXISTS(
select 1 from jobcharge jobc inner join charge
ON charge.chargeid = jobc.chargeid
WHERE jobc.jobid = jobs.jobid AND charge.description LIKE '%return%
) THEN jobs.CALCULATEDCOST/2 ELSE 0.00 END as "RETURN PRICE",
使用
存在(选择1…
可能快于选择计数()…
在中的中没有,然后选择部分。但是很难说如何解决这个问题,因为我不知道您真正想要的是什么。显示整个查询这是完整的查询…..不,这只是一个较大语句的一部分。在这个查询中jobs
未定义。她在哪里?
CASE WHEN EXISTS(
select 1 from jobcharge jobc inner join charge
ON charge.chargeid = jobc.chargeid
WHERE jobc.jobid = jobs.jobid AND charge.description LIKE '%return%
) THEN jobs.CALCULATEDCOST/2 ELSE 0.00 END as "RETURN PRICE",