码迷,mamicode.com
首页 > 数据库 > 详细

sqlserver 2005及以上版本 group by 如何合并字符串优化记?

时间:2019-10-14 12:54:30      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:通过   max   等于   字符串   nbsp   rtb   end   val   col   

前提:sqlserver 2005及以上版本

 

表(tb)

id    value

1     aa

2     cc

3     bb

3     dd

4     aa

4     cc

4     dd

5     aa

 

优化前:

select id, value = (select value+‘,‘ from tb as rtb where rtb.id = a.tb.id for xml path(‘‘))

from tb as a

group by a.id

 

优化后:(思路:将count(0)数等于1或者等于2的记录,通过min,max处理,减少每个id都要查询表)

select id, value =case count(0) when 1 then min(value)

            when 2 then min(value)+‘,‘+max(value)

            else   (select value+‘,‘ from tb as rtb where rtb.id = a.tb.id for xml path(‘‘)) end

from tb as a

group by a.id

sqlserver 2005及以上版本 group by 如何合并字符串优化记?

标签:通过   max   等于   字符串   nbsp   rtb   end   val   col   

原文地址:https://www.cnblogs.com/mirsh/p/11670627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!