繁体   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