簡體   English   中英

如何用左聯接和案例陳述消除重復項?

[英]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

很基本的東西。 但是,在某些情況下,表X.ZWNY中的每個REFNUMBER可能多次出現“ ABCD”,並且沒有任何其他唯一標識符來限制結果。 有沒有辦法放置DISTINCT之類的東西或類似的東西使其僅返回“ 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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM