사례 문을 사용하려고하지만 오류가 계속 발생하려고합니다. 문은 다음과 같습니다.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에서 새로운 것 같습니다.
,하지만 당신은 이미 매우 정교 ... "UNION 제외).. 키워드는 예상되지 FETCH 유효한 토큰을"- – pascal
* 굵은 글씨의 값 *이 일부 편집에서 사라졌습니다 ... 어쨌든, 굵은 글씨의 값을 바꿀 때 ... 무엇으로? – pascal
'acct_id'가'count (*) = 1 '을 가지는 acct_id에 의해 TABLE2 그룹에서 select acct_id에 있다고 말하는 TABLE1, TABLE2, TABLE3을 연결하는 디자인에 제약이 있는가? 즉, TABLE3의 select count (*) 여기서 acct_id = TABLE3.acct_id'는 1을 반환합니까? – pascal