Sql server 带有sumsql的CASE语句

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

有人能帮我找出下面CASE语句的正确语法吗?这是我创建的一个视图的一部分,当费用描述中有“Return”时,返回价格是jobs表中计算成本的一半。它说关键字ELSE的语法不正确。提前谢谢

`

` 以上是完整的查询。

这应该可以:

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",