簡體   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