簡體   English   中英

STRING_AGG 除了來自另一列的特定字符串

[英]STRING_AGG except specific string from another column

我想知道如何排除 STRING_AGG 中的特定字符串? 這是我想要從列名 PRIMARY 上的特定值的串聯中排除的原始查詢。 對不起,我不知道如何使用正確的格式,我會附上圖片來代替我的場景的清晰圖片。 在此處輸入圖像描述

SELECT t1.ID, t1.NAME, STRING_AGG(Trim(t2.COUNTRY), ';') WITHIN GROUP(ORDER BY COUNTRY) COUNTRY, PRIMARY FROM t1 LEFT JOIN t2 on t1.ID=t2.ID GROUP BY t1.ID ,t1.NAME,t1.PRIMARY

t1

ID 名稱 PRIMARY 1 WHITE US 2 RED CA 3 BLUE US 4 GREEN GB

t2 ID COUNTRY 1 US 1 CA 2 GB 2 DE 3 DE 3 CA 4 CA 4 DE 4 US

結果: ID NAME PRIMARY COUNTRY 1 WHITE US CA(除了美國,因為它已經在 PRIMARY)2 RED CA GB;DE
3 藍色美國德;加
4 GREEN DE CA;DE;US(DE 除外,因為它已經在小學)

只需使用case表達式:

STRING_AGG(CASE WHEN t2.Country <> Primary THEN Trim(t2.COUNTRY) END, ';') WITHIN GROUP (ORDER BY COUNTRY)

STRING_AGG()忽略NULL值。

暫無
暫無

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

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