繁体   English   中英

sql server 2008中的case子查询

[英]case subquery in sql server 2008

以下陈述给出了错误

print(存在时的情况(从tblCustomerProductsDiscount PD中选择count(*),其中PD.cust_ID = 138,PD.pack_detl_ID = 1)然后0结束)

错误:在此上下文中不允许子查询。 只允许标量表达式。

首先,虽然你的意图非常明确,但目前形式的剧本没有意义,这就是原因。

您正在检查select count(*)... subselect中是否存在行,但事实是, COUNT() 始终返回一个值。 如果指定条件没有行,它将返回0 ,但仍然是子查询返回的行,并且EXISTS在任何情况下都将计算为TRUE

为了解决这个问题,只需更换select count(*)select *

另一件事是错误。 在此上下文中不允许使用子查询 ,这是最终的 使用PRINT您不能以任何形式使用子查询。 将结果存储在变量中并将变量PRINT

declare @result int;
set @result = case
  when exists (
    select *
    from tblCustomerProductsDiscount PD
    where PD.cust_ID=138 and PD.pack_detl_ID = 1
  )
    then 0
end

print @result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM