Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 2.21 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to convert rows to column in T-SQL, and write it in a temp table?
  2. SELECT Year, Month, Line, SUM(value) as total FROM myTable
  3.        
  4. Year  Month   Line     Total
  5. -------------------------------------------
  6. 2011     2      B1     5203510.00
  7. 2011     3      B1     2228850.00
  8. 2011     4      B1     7258075.00
  9. 2011     5      B1     6305370.00
  10. 2011     6      B1     5540180.00
  11. 2011     7      B1     7624430.00
  12. 2011     8      B1     4042300.00
  13. 2011     9      B1     3308870.00
  14. 2011    10      B1     4983875.00
  15. 2011    11      B1     4636500.00
  16. 2011    12      B1     3987350.00
  17. 2012     1      B1      518400.00
  18.        
  19. Year Line  Jan    Feb   Mar   Apr ..... December
  20.  
  21. 2011 B1      0    52035  2228 725 ..... 3987350
  22. 2012 B1     51840 ... ... ....
  23.        
  24. SELECT  *
  25. FROM    (
  26.           SELECT  Year, Line, Total, mnt = DATENAME(month, DateAdd(month, [Month], 0)-1)
  27.           FROM    myTable
  28.         ) mt          
  29. PIVOT   (MAX(Total) FOR [mnt] IN ([January],[February],[March],[April],[May],[June],[July],[August],[September],[October],[November],[December])) AS PVT
  30.        
  31. ;WITH myTable AS (
  32.   SELECT * FROM (VALUES
  33.     (2011     , 2      , 'B1',      5203510.00)
  34.     , (2011     , 3      , 'B1',      2228850.00)
  35.     , (2011     , 4      , 'B1',      7258075.00)
  36.     , (2011     , 5      , 'B1',      6305370.00)
  37.     , (2011     , 6      , 'B1',      5540180.00)
  38.     , (2011     , 7      , 'B1',      7624430.00)
  39.     , (2011     , 8      , 'B1',      4042300.00)
  40.     , (2011     , 9      , 'B1',      3308870.00)
  41.     , (2011    , 10      , 'B1',      4983875.00)
  42.     , (2011    , 11      , 'B1',      4636500.00)
  43.     , (2011    , 12      , 'B1',      3987350.00)
  44.     , (2012     , 1      , 'B1',       518400.00)
  45.   ) AS myTable (Year, Month, Line, Total)
  46. )  
  47. SELECT  *
  48. FROM    (
  49.           SELECT  Year, Line, Total, mnt = DATENAME(month, DateAdd(month, [Month], 0)-1)
  50.           FROM    myTable
  51.         ) mt          
  52. PIVOT   (MAX(Total) FOR [mnt] IN ([January],[February],[March],[April],[May],[June],[July],[August],[September],[October],[November],[December])) AS PVT
  53.        
  54. SELECT [1] AS Jan, [2] AS Feb, .. [12] AS Dec,
  55.        Total
  56. FROM ( SELECT Month, Total FROM tableA ) AS SOURCE
  57. PIVOT
  58. ( MAX(Total) AS Total
  59.   FOR
  60.   Month IN ([1],[2],...[12]) ) AS PIVOT