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