Guest User

Untitled

a guest
Jan 18th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. --DROP TABLE IF EXISTS [dbo].[DataSource];
  2.  
  3. CREATE TABLE [dbo].[DataSource]
  4. (
  5. [VISIT_ID] INT
  6. ,[Parameter1] TINYINT
  7. ,[Parameter2] TINYINT
  8. ,[Parameter3] TINYINT
  9. );
  10.  
  11. INSERT INTO [dbo].[DataSource] ([VISIT_ID], [Parameter1], [Parameter2], [Parameter3])
  12. VALUES (100, 1, 2, 1)
  13. ,(101, 4, 2, 1)
  14. ,(102, 2, 2, 0);
  15.  
  16. -- static
  17.  
  18. SELECT *
  19. FROM [dbo].[DataSource]
  20. UNPIVOT
  21. (
  22. [value] FOR [column] IN ([Parameter1], [Parameter2], [Parameter3])
  23. ) UNPVT
  24. PIVOT
  25. (
  26. MAX([value]) FOR [VISIT_ID] IN ([100], [101], [102])
  27. ) PVT;
  28.  
  29. --- danymic
  30.  
  31. DECLARE @DynamicTSQLStatement NVARCHAR(MAX)
  32. ,@DynamicColumnsP NVARCHAR(MAX)
  33. ,@DynamicColumnsU NVARCHAR(MAX);
  34.  
  35. SET @DynamicColumnsP = STUFF
  36. (
  37. (
  38. SELECT ',[' + [name] + ']'
  39. FROM [sys].[columns]
  40. WHERE [name] LIKE 'Parameter%'
  41. AND [object_id] = OBJECT_ID('[dbo].[DataSource]')
  42. ORDER BY [name]
  43. FOR XML PATH('') ,TYPE
  44. ).value('.', 'NVARCHAR(MAX)')
  45. ,1
  46. ,1
  47. ,''
  48. );
  49.  
  50. SET @DynamicColumnsU = STUFF
  51. (
  52. (
  53. SELECT ',[' + CAST([VISIT_ID] AS VARCHAR(12)) + ']'
  54. FROM [dbo].[DataSource]
  55. ORDER BY [VISIT_ID]
  56. FOR XML PATH('') ,TYPE
  57. ).value('.', 'NVARCHAR(MAX)')
  58. ,1
  59. ,1
  60. ,''
  61. );
  62.  
  63. SET @DynamicTSQLStatement = N'
  64. SELECT *
  65. FROM [dbo].[DataSource]
  66. UNPIVOT
  67. (
  68. [value] FOR [column] IN (' + @DynamicColumnsP + ')
  69. ) UNPVT
  70. PIVOT
  71. (
  72. MAX([value]) FOR [VISIT_ID] IN (' + @DynamicColumnsU + ')
  73. ) PVT;';
  74.  
  75. EXEC sp_executesql @DynamicTSQLStatement;
Add Comment
Please, Sign In to add comment