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

时间:2015-08-06 16:24:59

标签: sql db2

以下是问题代码的一小部分示例:

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"?如果我忽略了一些简单的事情,我很抱歉,但我似乎无法到达那里。

1 个答案:

答案 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)。