Rau*_*auf 1 sql case sql-server-2008
以下语句给出错误
打印(存在时的情况(从 tblCustomerProductsDiscount PD 选择 count(*),其中 PD.cust_ID=138 且 PD.pack_detl_ID = 1),然后 0 结束)
错误: 在此上下文中不允许子查询。仅允许使用标量表达式。
首先,虽然您的意图非常明确,但当前形式的脚本没有意义,原因如下。
您正在检查子选择中是否存在行select count(*)...,但事实是,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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4142 次 |
| 最近记录: |