通过XML PATH在select中进行字符串合并(sql2005)

今天制作程序时遇到一个要求,有主表和明细表,主表略,明细表如下

图号

专业

晒图数

规格

主表ID

Jz-01

建筑

1

A0

1

JG-01

结构

2

A2

1

Jz-02

建筑

1

A0

1

JG-03

结构

2

A2

1

1

要求在专业、晒图数、规格相同的情况下,对图号进行合并,结果如下

图号

专业

晒图数

规格

主表ID

Jz-01jz-02

建筑

1

A0

1

JG-01JG-03

结构

2

A2

1

2

因为涉及到数据合并,用程序实现比较麻烦,考虑用sql实现。参考了下面的文章后有了思路:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

SELECT DISTINCT
        DwgNO = STUFF(( SELECT  ',' + [DwgNO]
                        FROM    明细表 t
                        WHERE   明细表.主表ID = t.主表ID
                                AND 明细表.规格 = t.规格
                                AND 明细表.专业 = t.专业
                                AND 明细表.晒图数 = t.晒图数
                                AND IsDel = 0
                      FOR
                        XML PATH('')
                      ), 1, 1, '') ,
        主表ID ,
        规格 ,
        专业 ,
        晒图数
FROM    明细表
WHERE   IsDel = 0

即可实现表2的效果





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值