日期:2014-05-17 浏览次数:20513 次
CREATE TABLE [dbo].[系统数据_员工信息](
[员工代码] [int] IDENTITY(1,1) NOT NULL,
[姓名] [nchar](4) NULL,
[机构代码] [int] NULL,
CREATE TABLE [dbo].[工作管理_工作列表](
[工作序号] [int] IDENTITY(1,1) NOT NULL,
[发布人] [nvarchar](4) NULL,
[发布日期] [datetime] NULL,
[状态] [nvarchar](3) NULL,
CREATE TABLE [dbo].[工作管理_工作分工](
[序号] [int] IDENTITY(1,1) NOT NULL,
[工作序号] [int] NULL,
[员工代码] [int] NULL,
[性质] [nvarchar](2) NULL,
以上是表结构
想得到以下结果:
工作序号 主管 分管 主办 协办
001 张x 李x 黄x 王x、刘x
也就是协办可能会有两个以上的人,怎么合并他们?
/*TB1
dah fid
A 10
A 11
A 12
B 20
B 21
B 22
C 30
C 31
要出来的效果是
dah fid
A 10,11,12
B 20,21,22
C 30,31
*/
WITH CTE AS (SELECT
'A' dah,10 fid UNION SELECT
'A',11 UNION SELECT
'A',12 UNION SELECT
'B',20 UNION SELECT
'B',21 UNION SELECT
'B',22 UNION SELECT
'C',30 UNION SELECT
'C',31
)
SELECT dah,fid=STUFF((SELECT ','+CAST(fid AS VARCHAR(10)) FROM CTE WHERE dah=t.dah FOR XML PATH('')),1,1,'')
FROM CTE t
GROUP BY t.dah