ms sql server 实现类似mysql group_concat的功能

sql server 2008没有group_contact功能,有点犯难。
然后……

非常好的博文,完全可以解决这个问题和疑问。

尤其是第一篇和第三篇。

http://outofmemory.cn/code-snippet/1705/ms-sql-server-achieve-leisi-mysql-group-concat-function
ps:
sql-server 2012之后微软提供了CONCAT函数可以实现这个功能。

https://blog.csdn.net/qq_36260310/article/details/79741608

https://blog.csdn.net/txqd1989/article/details/53762179


我当前业务中的一端类似代码:

SELECT 
n.*,
(SELECT Text + ',' FROM xt_BBS_PostPrefixLabel
 WHERE PostId = n.PostId
 FOR XML PATH('')) as Text
FROM 
xt_BBS_BannerNews n 
left join
xt_BBS_PostDetail p 
on
n.PostId = p.Id 

由于在高级语言中(C#、Js等),形如"aaa,bbb,ccc,"这样最后多一个逗号的问题很好处理,我就把sql精简了一点。
都很好理解。


单表的时候:

select
op.OpenID,
STUFF(( SELECT CONCAT(',', b.OrderID)    FROM PaymentOrderOpenID b  WHERE b.OpenID = op.OpenID  FOR XML PATH('')),1 ,1, '')  aaa
from 
PaymentOrderOpenID op
where   ...
group by op.OpenID

order by
op.OpenID

将CONTACT用在复杂语句中示例:

select
p.Mobile as mobile ,p.CustomerName as customerName,  CONCAT ( p.TableId, ',') as orderIds,
max(f.PersonId) as saleId, min(p.ConfirmDate) as firstDealTime
from
PaymentOrder p
left join
FollowCustomer f
on p.CustomerId=f.CustomerUserId
where
****
group by p.Mobile,p.CustomerName,CONCAT ( p.TableId, ',')

统计结果:
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值