Solved

Dynamic way to turn rows (which are already in cross-tab format) into columns?

Posted on 2009-05-20
5
200 Views
Last Modified: 2012-05-07
The recordset I have is like this:
Date      Type            North_Cnt       West_Cnt
5/1/09     A                 20                  30  
5/1/09     B                 40                  25
5/2/09     A                30                  20
5/2/09     B                35                  45
...
I want to turn it into this way:
Date      Type    North_Cnt   West_Cnt    Date     Type  North_Cnt     West_Cnt
5/1/09     A             20                30         5/2/09     A          30                  20
5/1/09     B             40                25         5/2/09     B           35                 45

so if there are 10 dates then there will be 10 sections each of which has 4 columns (date, type, North_cnt, West_cnt) so totally 40 columns.

I want to try Pivot in 2005 but doubt it would work. I guess the only way is to use dynamic sql?
Has anyone done something similar like this before?
0
Comment
Question by:qinyan
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 39

Accepted Solution

by:
BrandonGalderisi earned 500 total points
ID: 24435707
One of our local hot shots here at EE wrote an article on doing dynamic pivots.

Take a look at this:

http://www.experts-exchange.com/articles/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Dynamic-Pivot-Procedure-for-SQL-Server.html
0
 

Author Comment

by:qinyan
ID: 24451161
Thanks! This is a very helpful article, the only problem is that it can only have one pivot_value_column in the aggregate. it doesn't do both sum(Tcs_quantity) and sum(tcs_quantity) together in the same pivot in the example, but this function is what i need.
0
 
LVL 39

Expert Comment

by:BrandonGalderisi
ID: 24451371
I haven't worked with PIVOT a lot, but I'll assume that "sum(Tcs_quantity) and sum(tcs_quantity)" are acutally two different columns.  You MAY need to do two pivot statements.  Or two whole selects, built as derived tables, then joined together.
0
 

Author Comment

by:qinyan
ID: 24451456
actually since my recordset is already in pivot format i'm looking for something like this:
select * from
(
select * from myTable
where date=5/1/09'
) a
join
(
select * from myTable
where date=5/2/09'
) b
on a.type=b.type

and make it dynamic:
declare @min datetime
select @min = min(date) from myTable

declare @max datetime
select @max=max(date) from myTable

declare @sql varchar(max)
select @sql = 'SELECT * from (select * from myTable where date=, ' + CHAR(13),

while @min<=@max
begin
SET @sql = @sql + ''

SET @min = @min + 7 ;

end
0
 

Author Comment

by:qinyan
ID: 24452225
I haven't worked with PIVOT a lot, but I'll assume that "sum(Tcs_quantity) and sum(tcs_quantity)" are acutally two different columns.  You MAY need to do two pivot statements.  Or two whole selects, built as derived tables, then joined together.

Yes I can do it that way and that's the only way to do it if using pivot, but I was just trying to avoid two or multiple pivot statements as I have 4 columns which i need to do aggregation on. That's why i was thinking about other ways in dynamic sql.

Thanks!
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

by Mark Wills Attending one of Rob Farley's seminars the other day, I heard the phrase "The Accidental DBA" and fell in love with it. It got me thinking about the plight of the newcomer to SQL Server...  So if you are the accidental DBA, or, simp…
In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

762 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