SqlServer 는 그룹의 내용 을 연결 합 니 다 - groupconcat

1741 단어
SqlServer  그룹의 내용 을 조합 하기:
프로젝트 1: xml 부분 집합
방안 2: 도움 sqlCLR 접속그룹 구현concat。성능 은 완벽 하지만 아 리 운 의 지지!!!!
 
CREATE TABLE [dbo].[a_data_test]( [empid] [INT] NULL, [workdate] [DATETIME] NULL) ON [PRIMARY]
 
 
INSERT INTO [a_data_test] ([empid], [workdate]) VALUES (1, '2018-8-17 10:20:43.33310:');GOINSERT INTO [a_data_test] ([empid], [workdate]) VALUES (1, '2018-8-17 10:20:43.333');GOINSERT INTO [a_data_test] ([empid], [workdate]) VALUES (2, '2018-8-17 10:21:09.29310:');GOINSERT INTO [a_data_test] ([empid], [workdate]) VALUES (2, '2018-8-17 10:21:09.293');GOINSERT INTO [a_data_test] ([empid], [workdate]) VALUES (3, '2018-8-17 10:21:37.87710:');GOINSERT INTO [a_data_test] ([empid], [workdate]) VALUES (3, '2018-8-17 10:21:37.880');GOINSERT INTO [a_data_test] ([empid], [workdate]) VALUES (3, '2018-8-17 10:21:37.88010:');GO
 
 
 
 1:
SELECT
ta.empid,
 STUFF((SELECT ',' +CONVERT(varchar(100), b.workdate, 25) 
                         FROM a_data_test b
                         WHERE ta.empid=b.empid
                         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM 
(
SELECT 
a.empid
 FROM
dbo.a_data_test a
GROUP BY a.empid
) ta
--LEFT JOIN dbo.a_data_test b ON b.empid = ta.empid

  
2: 
 https://archive.codeplex.com/?p=groupconcat
https://github.com/orlando-colamatteo/ms-sql-server-group-concat-sqlclr/tree/master/GroupConcat 
https://www.codeproject.com/Articles/691102/String-Aggregation-in-the-World-of-SQL-Server
https://www.anexinet.com/blog/group_concat-functionality-for-sql-server/
 

좋은 웹페이지 즐겨찾기