Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- email prject_name
- rafael.nadal@xyz.com lab1
- rafael.nadal@xyz.com lab2
- rafael.nadal@xyz.com lab3
- TEST@TEST.COM shift1
- TEST@TEST.COM shift2
- email project_name
- rafael.nadal@xyz.com lab1, lab2, lab3
- TEST@TEST.COM shift1, shift2, shift3
- select distinct email ,
- STUFF((Select ','+project_name
- from dbo.[UMG sent 2016] as T1
- where T1.email=T2.email
- FOR XML PATH('')),1,1,'') from dbo.[UMG sent 2016] as T2;
- SELECT DISTINCT email,
- STUFF((SELECT ',' + project_name
- FROM dbo.[UMG sent 2016] AS T1
- WHERE T1.email = T2.email
- FOR XML PATH('')), 1, 1, '')
- FROM dbo.[UMG sent 2016] AS T2;
- SELECT email,
- STUFF((SELECT ',' + project_name
- FROM dbo.[UMG sent 2016] AS T1
- WHERE T1.email = T2.email
- FOR XML PATH('')), 1, 1, '')
- FROM dbo.[UMG sent 2016] AS T2
- GROUP BY email;
- -- Create the working table ...
- IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp
- SELECT ROW_NUMBER() OVER( PARTITION BY email ORDER BY prject_name ) rowId, email, CAST( prject_name AS VARCHAR(500 ) ) prject_name
- INTO #tmp
- FROM dbo.[UMG sent 2016]
- GO
- -- Index temp table
- CREATE UNIQUE CLUSTERED INDEX _cdx ON #tmp ( rowId, email )
- GO
- SELECT TOP 100 'before' s, *
- FROM #tmp
- ORDER BY email
- -- Loop through appending the projects
- DECLARE @n INT = 1
- WHILE @@ROWCOUNT != 0
- BEGIN
- IF @n > 99 BEGIN RAISERROR( 'Too many loops!', 16, 1 ) BREAK END -- Loop safety
- SET @n += 1
- UPDATE t
- SET t.prject_name = CONCAT( t.prject_name, ', ', s.prject_name )
- FROM #tmp t
- INNER JOIN #tmp s ON t.email = s.email
- WHERE t.rowId = 1
- AND s.rowId = @n
- END
- GO
- SELECT TOP 100 'after' s, *
- FROM #tmp
- WHERE rowId = 1
- ORDER BY email
- create index ixEmail on [UMG sent 2016](email) include (prject_name)
Add Comment
Please, Sign In to add comment