Guest User

Untitled

a guest
Feb 23rd, 2018
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. email prject_name
  2. rafael.nadal@xyz.com lab1
  3. rafael.nadal@xyz.com lab2
  4. rafael.nadal@xyz.com lab3
  5. TEST@TEST.COM shift1
  6. TEST@TEST.COM shift2
  7.  
  8. email project_name
  9. rafael.nadal@xyz.com lab1, lab2, lab3
  10. TEST@TEST.COM shift1, shift2, shift3
  11.  
  12. select distinct email ,
  13. STUFF((Select ','+project_name
  14. from dbo.[UMG sent 2016] as T1
  15. where T1.email=T2.email
  16. FOR XML PATH('')),1,1,'') from dbo.[UMG sent 2016] as T2;
  17.  
  18. SELECT DISTINCT email,
  19. STUFF((SELECT ',' + project_name
  20. FROM dbo.[UMG sent 2016] AS T1
  21. WHERE T1.email = T2.email
  22. FOR XML PATH('')), 1, 1, '')
  23. FROM dbo.[UMG sent 2016] AS T2;
  24.  
  25. SELECT email,
  26. STUFF((SELECT ',' + project_name
  27. FROM dbo.[UMG sent 2016] AS T1
  28. WHERE T1.email = T2.email
  29. FOR XML PATH('')), 1, 1, '')
  30. FROM dbo.[UMG sent 2016] AS T2
  31. GROUP BY email;
  32.  
  33. -- Create the working table ...
  34. IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp
  35.  
  36. SELECT ROW_NUMBER() OVER( PARTITION BY email ORDER BY prject_name ) rowId, email, CAST( prject_name AS VARCHAR(500 ) ) prject_name
  37. INTO #tmp
  38. FROM dbo.[UMG sent 2016]
  39. GO
  40.  
  41. -- Index temp table
  42. CREATE UNIQUE CLUSTERED INDEX _cdx ON #tmp ( rowId, email )
  43. GO
  44.  
  45. SELECT TOP 100 'before' s, *
  46. FROM #tmp
  47. ORDER BY email
  48.  
  49.  
  50. -- Loop through appending the projects
  51. DECLARE @n INT = 1
  52.  
  53. WHILE @@ROWCOUNT != 0
  54. BEGIN
  55.  
  56. IF @n > 99 BEGIN RAISERROR( 'Too many loops!', 16, 1 ) BREAK END -- Loop safety
  57. SET @n += 1
  58.  
  59. UPDATE t
  60. SET t.prject_name = CONCAT( t.prject_name, ', ', s.prject_name )
  61. FROM #tmp t
  62. INNER JOIN #tmp s ON t.email = s.email
  63. WHERE t.rowId = 1
  64. AND s.rowId = @n
  65.  
  66. END
  67. GO
  68.  
  69. SELECT TOP 100 'after' s, *
  70. FROM #tmp
  71. WHERE rowId = 1
  72. ORDER BY email
  73.  
  74. create index ixEmail on [UMG sent 2016](email) include (prject_name)
Add Comment
Please, Sign In to add comment