如何用左连接和 case 语句消除重复项?

How to eliminate duplicates with a left join and a case statement?

这里是问题代码的一个小样本:

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" 可以针对 table X.ZWNY 中的每个 REFNUMBER 出现多次,并且没有任何其他唯一标识符来限制结果。有没有办法把像 DISTINCT 之类的东西或类似的东西放在 return 只有第一次出现的 "ABCD" 中?如果我忽略了一些简单的事情,我深表歉意,但我似乎做不到。

不要使用 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)。