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函数可以实现这个功能。
我当前业务中的一端类似代码:
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, ',')
统计结果:
版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:MySQL数据存储原理一 下一篇:mysql索引有什么用