[英]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.