今天一位以前的同事问起这个问题,以前貌似见过但是忘记了,随即上网查查了
参照了这个http://topic.csdn.net/u/20090926/22/43301a7a-00eb-4072-b0c1-c4158ed5a868.html
和 http://topic.csdn.net/u/20090925/09/4218b452-9696-4c5c-a687-e0f42196af3b.html
原始数据结构如下:
<!--StartFragment -->
文章名 作者 创建时间 附件名称
春天 程晓锋 2010-9-9 a.doc
春天 程晓锋 2010-9-9 b.doc
春天 程晓锋 2010-9-9 我的.ppt
---------------------------------------------
希望能有一套高效的方法,将其迅速整理成如下格式:
表2
-----------------------------------------------------------
文章名 作者 创建时间 附件名称
春天 程晓锋 2010-9-9 a.doc, b.doc, 我的.ppt
----------------------------------------------------------
CREATE TABLE T_BASE(ID INT,NAME VARCHAR(10),AGE INT);
INSET INTO T_BASE VALUES
(1,'ZHANG',30),
(2,'YANG',28),
(3,'LI',33);
CREATE TABLE T_DETAIL(ID INT,INFO VARCHAR(10));
INSERT INTO T_DETAIL VALUES
(1,'ZHANG1'),
(1,'ZHANG2'),
(1,'ZHANG3'),
(2,'YANG1'),
(2,'YANG2'),
(3,'LI1');
WITH B (FATHER,SON,ID,ALLINFO) AS
(SELECT RTRIM(LTRIM(CHAR(A.ID)))|| CHAR(ROW_NUMBER() OVER(PARTITION BY ID)) AS FATHER,
RTRIM(LTRIM(CHAR(A.ID)))|| CHAR(ROW_NUMBER() OVER(PARTITION BY ID) + 1) AS SON,
A.ID, CAST(A.INFO AS VARCHAR(100))
FROM T_DETAIL A
UNION ALL
SELECT