SQL 多条记录合并成一条记录

gaoxingstyle 2016-08-22 08:58:56


请求大神帮助。
...全文
3024 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-08-23
  • 打赏
  • 举报
回复
其它表也是合并,用以上CROSS APPLY方法就行了
gaoxingstyle 2016-08-23
  • 打赏
  • 举报
回复
引用 6 楼 roy_88 的回复:
这样加
 SELECT u.Id ,
        u.NameCN ,
        STUFF(t.PostionName,1,1,'') AS PostionName
 FROM   [Workflow].[tbl_User] u        
		CROSS APPLY(  
		SELECT ','+pos.NameCN  
		FROM [Workflow].[tbl_OrgNodeUserPosition] oup 
			INNER JOIN [Workflow].[tbl_Position] pos ON oup.PositionId = pos.Id
		WHERE  oup.UserId = u.Id AND oup.OrgNodeId = 2061
		FOR XML PATH('')
		) AS t(PostionName)
 WHERE  t.PostionName>''

再追问一句,如果还需要其它表里的OrgNodeId里的字段改怎么写,谢谢。
gaoxingstyle 2016-08-23
  • 打赏
  • 举报
回复
引用 6 楼 roy_88 的回复:
这样加
 SELECT u.Id ,
        u.NameCN ,
        STUFF(t.PostionName,1,1,'') AS PostionName
 FROM   [Workflow].[tbl_User] u        
		CROSS APPLY(  
		SELECT ','+pos.NameCN  
		FROM [Workflow].[tbl_OrgNodeUserPosition] oup 
			INNER JOIN [Workflow].[tbl_Position] pos ON oup.PositionId = pos.Id
		WHERE  oup.UserId = u.Id AND oup.OrgNodeId = 2061
		FOR XML PATH('')
		) AS t(PostionName)
 WHERE  t.PostionName>''

学习,
中国风 2016-08-23
  • 打赏
  • 举报
回复 1
这样加
 SELECT u.Id ,
        u.NameCN ,
        STUFF(t.PostionName,1,1,'') AS PostionName
 FROM   [Workflow].[tbl_User] u        
		CROSS APPLY(  
		SELECT ','+pos.NameCN  
		FROM [Workflow].[tbl_OrgNodeUserPosition] oup 
			INNER JOIN [Workflow].[tbl_Position] pos ON oup.PositionId = pos.Id
		WHERE  oup.UserId = u.Id AND oup.OrgNodeId = 2061
		FOR XML PATH('')
		) AS t(PostionName)
 WHERE  t.PostionName>''

gaoxingstyle 2016-08-23
  • 打赏
  • 举报
回复
引用 4 楼 roy_88 的回复:
 SELECT u.Id ,
        u.NameCN ,
        STUFF(t.PostionName,1,1,'') AS PostionName
 FROM   [Workflow].[tbl_User] u        
		CROSS APPLY(  
		SELECT ','+pos.NameCN  
		FROM [Workflow].[tbl_OrgNodeUserPosition] oup 
			INNER JOIN [Workflow].[tbl_Position] pos ON oup.PositionId = pos.Id
		WHERE  oup.UserId = u.Id
		FOR XML PATH('')
		) AS t(PostionName)
 WHERE  u.OrgNodeId = 2061;

牛!不过OrgNodeId是这张表的tbl_OrgNodeUserPosition
中国风 2016-08-22
  • 打赏
  • 举报
回复
 SELECT u.Id ,
        u.NameCN ,
        STUFF(t.PostionName,1,1,'') AS PostionName
 FROM   [Workflow].[tbl_User] u        
		CROSS APPLY(  
		SELECT ','+pos.NameCN  
		FROM [Workflow].[tbl_OrgNodeUserPosition] oup 
			INNER JOIN [Workflow].[tbl_Position] pos ON oup.PositionId = pos.Id
		WHERE  oup.UserId = u.Id
		FOR XML PATH('')
		) AS t(PostionName)
 WHERE  u.OrgNodeId = 2061;

中国风 2016-08-22
  • 打赏
  • 举报
回复
OrgNodeId?那一表的列
gaoxingstyle 2016-08-22
  • 打赏
  • 举报
回复
select u.Id,u.NameCN,pos.NameCN PostionName from [Workflow].[tbl_OrgNodeUserPosition] oup inner join [Workflow].[tbl_User] u on oup.UserId = u.Id inner join [Workflow].[tbl_Position] pos on oup.PositionId = pos.Id where OrgNodeId = 2061
gaoxingstyle 2016-08-22
  • 打赏
  • 举报
回复
详细

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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