Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 368
  • Last Modified:

pivot syntax

can anyone help me with this syntax...i get this error at line 5

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ','.
select *
from ttg_monthly_revenue_vw
pivot
(
	sum([sales]),
	sum([cogs]),
	sum([trans billing amt]) 
	for [month] in (
					[JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC]
					) PVTTBL

Open in new window

0
k1ng87
Asked:
k1ng87
  • 5
  • 4
1 Solution
 
ralmadaCommented:
something like this?

select 	max([JAN]) as [Jan],
	max([JAN_cogs]) as [Jan_cogs],
	max([JAN_tba]) as [JAN_tba],
	... and so on...
from (
	select 	sales, 
		[cogs], 
		[trans billing amt], 
		[month], 
		[month] + '_cogs' as [month_cogs], 
		[month] + '_tba' as [month_tba]
	from ttg_monthly_revenue_vw
) o
pivot(sum([sales]) for [month] in ([JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC]) PVTTBL
pivot(sum([cogs]) for [month_cogs] in ([JAN_cogs],[FEB_cogs],[MAR_cogs],[APR_cogs],[MAY_cogs],[JUN_cogs],[JUL_cogs],[AUG_cogs],[SEP_cogs],[OCT_cogs],[NOV_cogs],[DEC_cogs]) PVTTBL1
pivot(sum([trans billing amt]) for [month_tba] in ([JAN_tba],[FEB_tba],[MAR_tba],[APR_tba],[MAY_tba],[JUN_tba],[JUL_tba],[AUG_tba],[SEP_tba],[OCT_tba],[NOV_tba],[DEC_tba]) PVTTBL2

Open in new window

0
 
GaneshSPCommented:
Can you tell me the table structure,values and what is the data you want?
0
 
k1ng87Author Commented:
My table structure is the following:

 [TRANS].[dbo].[ttg_ssrs_reporting_metrics_vw]
           ([segment]
           ,[group]
           ,[division]
           ,[division_city]
           ,[inv_year_id]
           ,[inv_month_id]
           ,[TransCost]
           ,[Sales]
           ,[COGS]
           ,[trans billing amt])
 
I would like to pivot the table to the following:

Segment | group | Division | division_city | Inv_year_ID | Entry_Type | Jan | Feb | Mar | Apr | May | etc...
--------------------------------------------------------------------------------------------------------------------------------------------------------
                                                                                            transcost
                                                                                            COGS
                                                                                            transbillingAmt
                                                                                            Sales
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
ralmadaCommented:
In that case you first need to unpivot and then pivot
See the below:

select 	[segment]
	,[group]
	,[division]
        ,[division_city]
	,[inv_year_id]
	,Entry_type
	,[JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC]
from 					
(
	select      a.[segment]
        	   ,a.[group]
	           ,a.[division]
        	   ,a.[division_city]
	           ,a.[inv_year_id]
        	   ,a.[inv_month_id]
		   ,up.Entry_type
        	   ,up.Amount
	from ttg_ssrs_reporting_metrics_vw a
	unpivot (amount for Entry_type in (Transcost, Sales, COGCS, [trans billing amt])) up
) o
pivot (sum(Amount) for inv_month_id in ([JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC])) p

Open in new window

0
 
ralmadaCommented:
same query, a bit more tidy:

select	[segment]
	,[group]
	,[division]
	,[division_city]
	,[inv_year_id]
	,Entry_type
	,[JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC]
from 					
(
	select	a.[segment]
		,a.[group]
		,a.[division]
		,a.[division_city]
		,a.[inv_year_id]
		,a.[inv_month_id]
		,up.Entry_type
		,up.Amount
	from ttg_ssrs_reporting_metrics_vw a
	unpivot (amount for Entry_type in (Transcost, Sales, COGCS, [trans billing amt])) up
) o
pivot (sum(Amount) for inv_month_id in ([JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC])) p

Open in new window

0
 
k1ng87Author Commented:
getting this error:

Msg 8167, Level 16, State 1, Line 1
The type of column "Sales" conflicts with the type of other columns specified in the UNPIVOT list.
Msg 207, Level 16, State 1, Line 19
Invalid column name 'COGCS'.
Msg 4104, Level 16, State 1, Line 19
The multi-part identifier "a.segment" could not be bound.
Msg 4104, Level 16, State 1, Line 19
The multi-part identifier "a.group" could not be bound.
Msg 4104, Level 16, State 1, Line 19
The multi-part identifier "a.division" could not be bound.
Msg 4104, Level 16, State 1, Line 19
The multi-part identifier "a.division_city" could not be bound.
Msg 4104, Level 16, State 1, Line 19
The multi-part identifier "a.inv_year_id" could not be bound.
Msg 4104, Level 16, State 1, Line 19
The multi-part identifier "a.inv_month_id" could not be bound.
0
 
ralmadaCommented:
ok, check this now:
select	[segment]
	,[group]
	,[division]
	,[division_city]
	,[inv_year_id]
	,Entry_type
	,[JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC]
from 					
(
	select	[segment]
		,[group]
		,[division]
		,[division_city]
		,[inv_year_id]
		,[inv_month_id]
		,up.Entry_type
		,up.Amount
	from (
		select 	segment, group, division, division_city,inv_year_id, inv_month_id,
			convert(sql_variant, Transcost) as Transcost,
			convert(sql_variant, Sales) as Sales,
			convert(sql_variant, COGCS) as COGCs,
			convert(sql_variant, [trans billing amt]) as [trans billing amt]
		from ttg_ssrs_reporting_metrics_vw
	) a
	unpivot (amount for Entry_type in (Transcost, Sales, COGCS, [trans billing amt])) up
) o
pivot (sum(Amount) for inv_month_id in ([JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC])) p

Open in new window

0
 
k1ng87Author Commented:
now getting this error...we're getting closer!! hahaha


Msg 8117, Level 16, State 1, Line 1
Operand data type sql_variant is invalid for sum operator.
0
 
k1ng87Author Commented:
if I remove the sql_variant conversion in line 20-23 I get this error then:


Msg 8167, Level 16, State 1, Line 1
The type of column "Sales" conflicts with the type of other columns specified in the UNPIVOT list.
0
 
ralmadaCommented:
what is the datatype of the Transcost, Sales, COGCS and trans billing amt column? can you just make them all the same datatype?
The below will make them all decimal 10, 2.
 
 

select	[segment]
	,[group]
	,[division]
	,[division_city]
	,[inv_year_id]
	,Entry_type
	,[JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC]
from 					
(
	select	[segment]
		,[group]
		,[division]
		,[division_city]
		,[inv_year_id]
		,[inv_month_id]
		,up.Entry_type
		,up.Amount
	from (
		select 	segment, group, division, division_city,inv_year_id, inv_month_id,
			convert(decimal(10,2), Transcost) as Transcost,
			convert(decimal(10,2), Sales) as Sales,
			convert(decimal(10,2), COGCS) as COGCs,
			convert(decimal(10,2), [trans billing amt]) as [trans billing amt]
		from ttg_ssrs_reporting_metrics_vw
	) a
	unpivot (amount for Entry_type in (Transcost, Sales, COGCS, [trans billing amt])) up
) o
pivot (sum(Amount) for inv_month_id in ([JAN],[FEB],[MAR],[APR],[MAY],[JUN],[JUL],[AUG],[SEP],[OCT],[NOV],[DEC])) p

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now