Pivot and Unpivot display

I have a table in Sql Server 2008 with these columns in it.
Month, Company, BillableQuantity, BilledAmount, Sales Tax

I need to display the data in this format
Company, Type, June, July, August....

I have attached a sample spreadsheet.  I can not figure out how to write the query to both pivot and unpivot this data.  Please help create this query.
 Pivot.xlsx
raphilAsked:
Who is Participating?
 
Kevin CrossConnect With a Mentor Chief Technology OfficerCommented:
Yes, sorry, that is because in most systems quantity (at least at the sellable level) will be whole numbers as customers tend to not buy partial parts *smile*; therefore, you will have to cast all the columns to same data type like decimal or money before doing the unpivot.

;with cte
as
(
   select [Month], Company
        , convert(decimal(14,4), [BillableQuantity]) AS BQ
        , convert(decimal(14,4), [BilledAmount] as BA
        , convert(decimal(14,4), [SalesTax]) as ST
   from your_table_name
), upvt
as
(
   select [Month], Company, [Type], [Value]
   from cte
   unpivot ([Value] for [Type] in ([BQ], [BA], [ST])) u
)
-- final select (pvt)
select *
from upvt
pivot (sum([Value]) for [Month] in ([January],...,[December])) p
;

Open in new window

0
 
Kevin CrossChief Technology OfficerCommented:
raphil,

Firstly, you would start with the unpivoting of the data.  You can use a derived table for this:

select [Month], Company, [Type], [Value]
from your_table_name
unpivot ([Value] for [Type] in ([Billable Quantity], [Billed Amount], [Sales Tax])) upvt

Then you would pivot this data by Month which should fit pivot's hard coded column list here as you know the values are January ... December.

select *
from (

select [Month], Company, [Type], [Value]
from your_table_name
unpivot ([Value] for [Type] in ([Billable Quantity], [Billed Amount], [Sales Tax])) upvt

) data
pivot (sum([Value]) for [Month] in ([January],...,[December])) pvt

Hope that helps.

Kevin
0
 
raphilAuthor Commented:
The type of column "BilledAmount" conflicts with the type of other columns specified in the UNPIVOT list.The type of column "BilledAmount" conflicts with the type of other columns specified in the UNPIVOT list.
0
 
raphilAuthor Commented:
Awesome!!!
Thanks a ton!  That worked like a breaze!

All points!
0
 
Kevin CrossChief Technology OfficerCommented:
Glad to have helped.
Best regards and happy coding,

Kevin
0
All Courses

From novice to tech pro — start learning today.