Solved

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

Posted on 2009-05-20
5
175 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
  • 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

Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

Question has a verified solution.

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

When writing XML code a very difficult part is when we like to remove all the elements or attributes from the XML that have no data. I would like to share a set of recursive MSSQL stored procedures that I have made to remove those elements from …
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…

895 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

13 Experts available now in Live!

Get 1:1 Help Now