Solved

pivot syntax

Posted on 2010-08-23
10
308 Views
Last Modified: 2012-05-10
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
Comment
Question by:k1ng87
  • 5
  • 4
10 Comments
 
LVL 41

Expert Comment

by:ralmada
Comment Utility
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
 

Expert Comment

by:GaneshSP
Comment Utility
Can you tell me the table structure,values and what is the data you want?
0
 
LVL 1

Author Comment

by:k1ng87
Comment Utility
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
 
LVL 41

Expert Comment

by:ralmada
Comment Utility
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
 
LVL 41

Expert Comment

by:ralmada
Comment Utility
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
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 1

Author Comment

by:k1ng87
Comment Utility
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
 
LVL 41

Expert Comment

by:ralmada
Comment Utility
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
 
LVL 1

Author Comment

by:k1ng87
Comment Utility
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
 
LVL 1

Author Comment

by:k1ng87
Comment Utility
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
 
LVL 41

Accepted Solution

by:
ralmada earned 500 total points
Comment Utility
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

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

INTRODUCTION: While tying your database objects into builds and your enterprise source control system takes a third-party product (like Visual Studio Database Edition or Red-Gate's SQL Source Control), you can achieve some protection using a sing…
If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now