各位大佬,我又来了。

ruhong 2013-07-30 11:36:31

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

也就是协办可能会有两个以上的人,怎么合并他们?


...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
---涛声依旧--- 2013-07-30
  • 打赏
  • 举报
回复
用FOR XML PATH,如下请参考:
/*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
chen357313771 2013-07-30
  • 打赏
  • 举报
回复
你搞个数据原型出来啊

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧