今天制作程序时遇到一个要求,有主表和明细表,主表略,明细表如下
图号 |
专业 |
晒图数 |
规格 |
主表ID |
||
Jz-01 |
建筑 |
1 |
A0 |
1 |
||
JG-01 |
结构 |
2 |
A2 |
Jz-02 |
JG-03 |
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,''),主表ID,规格,专业,晒图数 FROM 明细表 WHERE IsDel = 0
即可实现表2的效果