Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. RESOURCE | DESCRIPTION | VALUE
  2. Test A Name | Resource A-xyz
  3. Test A | Height | 20
  4. Test A | Unit | ft
  5. Test A | Location | Site 1
  6. Test B | Volume | 30
  7. Test C | Width | 10
  8. Test C | Unit | in
  9.  
  10. RESOURCE | Name | Height | Unit | Location | Volume | Width
  11. Test A | Resource A-xyz | 20 | ft | Site 1 | |
  12. Test B | | | | | 30 |
  13. Test C | | | in | | | 10
  14.  
  15. SELECT *
  16. FROM Table1
  17. PIVOT(MAX(VALUE) FOR DESCRIPTION IN (Name,Height,Unit,Location,Volume,Width))p
  18.  
  19. SELECT resource,Name,Height,Unit,Location,Volume,Width
  20. FROM
  21. #T1 AS SourceTable
  22. PIVOT
  23. (
  24. max(value)
  25. FOR description IN ([Name],[Height],[Unit],[Location],[Volume],[Width])
  26. ) AS PivotTable
  27. ORDER BY 1
  28.  
  29. CREATE TABLE demo
  30. (
  31. RESOURCE VARCHAR(100),
  32. DESCRIPTION VARCHAR(100), VALUE VARCHAR(100)
  33. )
  34.  
  35. INSERT INTO demo VALUES
  36. ('Test A' , 'Name' , 'Resource A-xyz')
  37. ,('Test A' , 'Height' , '20')
  38. ,('Test A' , 'Unit' , 'ft')
  39. ,('Test A' , 'Location' , 'Site 1')
  40. ,('Test B' , 'Volume' , '30')
  41. ,('Test C' , 'Width' , '10')
  42. ,('Test C' , 'Unit' , 'in')
  43.  
  44.  
  45. SELECT DISTINCT DESCRIPTION INTO #tbl FROM demo
  46. //Get list of values to be pivoted
  47. DECLARE @var NVARCHAR(1000)=''
  48. SELECT @var = @var +', ' + DESCRIPTION FROM #tbl
  49. SELECT @var = SUBSTRING(@var, 2, LEN(@var))
  50. SELECT @var
  51.  
  52. DECLARE @query NVARCHAR(2000) = 'SELECT * FROM demo PIVOT(MAX(VALUE) FOR DESCRIPTION IN ('+ @var + '))p'
  53. EXEC sp_executesql @query
  54.  
  55. CREATE TABLE #tb1
  56. (
  57. [RESOURCE] varchar(100),
  58. [FIELD1] varchar(100),
  59. [FIELD2] varchar(50),
  60. .
  61. .
  62. .
  63. [LAST FIELD] varchar(50),
  64. )
  65.  
  66. INSERT INTO #tb1 (RESOURCE)
  67. SELECT DISTINCT RESOURCE FROM tb2
  68. ORDER BY Resource ASC
  69.  
  70. UPDATE #tb1 SET [FIELD1] = (SELECT VALUE FROM tb2 WHERE Resource = #tb1.Resource and Property = [FIELD1])
  71. .
  72. .
  73. .
  74. UPDATE #tb1 SET [LAST FIELD] = (SELECT VALUE FROM tb2 WHERE Resource = #tb1.Resource and Property = [LAST FIELD])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement