Click here to Skip to main content
15,897,187 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
SQL
January February March April
  500     200      300   400



how can i make it into

SQL
Month     Result
  January   500
  February  200
  March     300
  April     400



i know that i can use pivot unpivot for it but how can i apply it??
thank you in advance :)
Posted
Updated 3-Jun-14 4:01am
v3

This comes up quite often.

See my previous answer:

combine multiple rows into one row in sql server[^]
 
Share this answer
 
Comments
hahaahahaahahhahahahhahaha 3-Jun-14 7:31am    
what if my sql statement is like this? im not really sure also how to implement that in my code @@

select
sum (case when [Month] = 1 then forecastdemand else 0.0 end ) January,
sum(case when [Month] = 2 then forecastdemand else 0.0 end) February,
sum(case when [Month] = 3 then forecastdemand else 0.0 end) March ,
sum(case when [Month] = 4 then forecastdemand else 0.0 end) April ,
sum(case when [Month] = 5 then forecastdemand else 0.0 end) May ,
sum(case when [Month] = 6 then forecastdemand else 0.0 end) June ,
sum(case when [Month] = 7 then forecastdemand else 0.0 end) July ,
sum(case when [Month] = 8 then forecastdemand else 0.0 end) August ,
sum(case when [Month] = 9 then forecastdemand else 0.0 end) September ,
sum(case when [Month] = 10 then forecastdemand else 0.0 end) October ,
sum(case when [Month] = 11 then forecastdemand else 0.0 end) November ,
sum(case when [Month] = 12 then forecastdemand else 0.0 end) December
from forecastreorder as result
where Productid = 2
Hi,

It's quite simple. You can do this with UNPIVOT.

Query:
SQL
SELECT [Month],
       Result
FROM
(select 
 sum (case when [Month] = 1 then forecastdemand else 0.0  end ) January,
 sum(case when [Month] = 2 then forecastdemand  else 0.0 end) February,
  sum(case when [Month] = 3 then forecastdemand  else 0.0 end) March ,
 sum(case when [Month] = 4 then forecastdemand  else 0.0 end) April ,
 sum(case when [Month] = 5 then forecastdemand  else 0.0 end) May ,
 sum(case when [Month] = 6 then forecastdemand  else 0.0 end) June ,
  sum(case when [Month] = 7 then forecastdemand  else 0.0 end) July ,
 sum(case when [Month] = 8 then forecastdemand  else 0.0 end) August ,
  sum(case when [Month] = 9 then forecastdemand  else 0.0 end) September ,
 sum(case when [Month] = 10 then forecastdemand  else 0.0 end) October ,
 sum(case when [Month] = 11 then forecastdemand  else 0.0 end) November ,
 sum(case when [Month] = 12 then forecastdemand  else 0.0 end) December 
from forecastreorder as result
where Productid = 2) AS SourceTable
       UNPIVOT (Result
               FOR [Month] IN ([January],
                               [February],
                               [March],
                               [April],
                               [May],
                               [June],
                               [July],
                               [August],
                               [September],
                               [October],
                               [November],
                               [December])) AS UnpivotTable;

Result:
XML
Month		Result
January		500.0
February	200.0
March		300.0
April		400.0
May		0.0
June		0.0
July		0.0
August		0.0
September	0.0
October		0.0
November	0.0
December	0.0

You can eliminate rows with [Result] = 0 by adding WHERE Result > 0.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900