我正在嘗試使用case語句,但不斷收到錯誤。以下是聲明:在THEN表達式中使用CASE語句值
select TABLE1.acct,
CASE
WHEN TABLE1.acct_id in (select acct_id
from TABLE2
group by acct_id
having count(*) = 1) THEN
(select name
from TABLE3
where TABLE1.acct_id = TABLE3.acct_id)
ELSE 'All Others'
END as Name
from TABLE1
當我用字面值替換THEN表達式中的TABLE1.acct_id時,查詢起作用。當我嘗試從查詢的WHEN部分使用TABLE1.acct_id時,出現錯誤,說明結果不止一行。看起來THEN表達式忽略了WHEN語句使用的單個值。不知道,也許這不是CASE聲明的有效使用。
我想查看在TABLE2中有一個條目的帳戶的名稱。
任何想法將不勝感激,我是一種新的SQL。
您在SQL是一種新的,但你已經是相當複雜的... – pascal 2010-07-29 18:31:27
*大膽的價值*失去了一些編輯...無論如何,當你取代大膽的價值......什麼? – pascal 2010-07-29 18:32:24
在你的設計中是否存在一些約束,鏈接TABLE1,TABLE2,TABLE3,它表示'acct_id'在'select'acct_id從TABLE2組通過acct_id具有count(*)= 1'意味着'select count(*)from TABLE3其中acct_id = TABLE3。acct_id'返回1? – pascal 2010-07-29 18:33:56