今天制作程序时遇到一个要求,有主表和明细表,主表略,明细表如下
图号 | 专业 | 晒图数 | 规格 | 主表ID |
Jz-01 | 建筑 | 1 | A0 | 1 |
JG-01 | 结构 | 2 | A2 | 1 |
Jz-02 | 建筑 | 1 | A0 | 1 |
JG-03 | 结构 | 2 | A2 | 1 |
表1
要求在专业、晒图数、规格相同的情况下,对图号进行合并,结果如下
图号 | 专业 | 晒图数 | 规格 | 主表ID |
Jz-01、jz-02 | 建筑 | 1 | A0 | 1 |
JG-01、JG-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的效果