以下是问题代码的一小部分示例:
SELECT
REFNUMBER
,CASE WHEN DESC = 'ABCD' THEN 'Y' ELSE '' END AS "DOESN'T WORK"
LEFT OUTER JOIN X.ZWNY Z
ON A.REFNUMBER = Z.REFNUMBER
非常基本的东西。但是,有些情况下" ABCD"对于表X.ZWNY中的每个REFNUMBER,可以多次出现,并且没有任何其他唯一标识符来限制结果。有没有办法把像DISTINCT之类的东西放到类似的东西上让它只返回第一次出现的" ABCD"?如果我忽略了一些简单的事情,我很抱歉,但我似乎无法到达那里。
答案 0 :(得分:0)
请勿使用left join
。使用exists
:
select refnumber,
(case when exists (select 1
from X.ZWNY Z
where A.REFNUMBER = Z.REFNUMBER and DESC = 'ABCD'
)
then 'Y' else ''
end) as BetterColumnName
from A;
注意:DESC
也是一个错误的列名,因为它是一个SQL保留字(用于order by
)。