sql 关于取相同id的字段值并以逗号相隔的问题

在今天工作中遇到的问题,客户要求将用户的多条标签以逗号相隔显示在用户列表中,数据库是sqlserver2014。之前在oracle、mysql中遇到过相似的需求,在这里总结下。

例如;

select TZ_CLASS_ID,TZ_BATCH_NAME FROM PS_TZ_CLS_BATCH_T ;

sql 关于取相同id的字段值并以逗号相隔的问题_第1张图片

 

要实现查询相同TZ_CLASS_ID情况下TZ_BATCH_NAME以逗号相连显示,在不同的数据库中有不同的方法实现。

oracle:listagg()

sql 关于取相同id的字段值并以逗号相隔的问题_第2张图片

 

 

mysql:group_concat()

sql 关于取相同id的字段值并以逗号相隔的问题_第3张图片

 

sqlserver: 

在网上搜索了下可以使用string_agg的方法,然而我们工作居然用的2014版本,并不支持

sql 关于取相同id的字段值并以逗号相隔的问题_第4张图片

 

 

使用stuff+xml path 实现分组连接

sql 关于取相同id的字段值并以逗号相隔的问题_第5张图片

 

 

 参考:

https://www.cnblogs.com/CreateMyself/p/9058380.html

https://www.cnblogs.com/lgx5/p/6543561.html

你可能感兴趣的:(sql 关于取相同id的字段值并以逗号相隔的问题)