~~~~~~这样的结果在SQL中如何实现?~~~~~~~

hxm20003 2014-12-24 10:25:39
cat_item 表
cat_id cat_name item_id item_name
21 水果 28 草莓
21 水果 32 苹果
36 蔬菜 2 大白菜
36 蔬菜 3 黄瓜
36 蔬菜 4 番茄
...

结果要求如下,这样的SQL怎么写比较效率高?

cat_id cat_name item_id item_name
21 水果 28,32 草莓,苹果
36 蔬菜 2,3,4 大白菜,黄瓜,番茄
。。。
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxm20003 2014-12-24
  • 打赏
  • 举报
回复
感谢给出建议。能给个实际的例子参考吗?
AcHerat 2014-12-24
  • 打赏
  • 举报
回复
1、楼主可以查查 for xml 的用法,拼接的; 2、创建一个函数,可以是针对本次场景应用,或者直接做一个公共过程,里面动态去拼接要执行的字段和表;
hxm20003 2014-12-24
  • 打赏
  • 举报
回复
利用for xml 实现了。 SELECT b.ID_Role , LEFT(b.user_id_list, LEN(b.user_id_list)-1) as user_id_list , LEFT(b.user_name_list, LEN(b.user_name_list)-1) as user_name_list into #temp_roleuserlist FROM ( SELECT ID_Role, (SELECT cast(ID_User as varchar(2000)) + ',' FROM #temp_roleuser WHERE ID_Role = a.ID_Role FOR XML PATH('')) AS user_id_list, (SELECT Name_User + ',' FROM #temp_roleuser WHERE ID_Role = a.ID_Role FOR XML PATH('')) AS user_name_list FROM #temp_roleuser a GROUP BY ID_Role ) b

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧