Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

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

Posted on 2009-05-20
5
Medium Priority
?
214 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 1500 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

Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

Question has a verified solution.

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

by Mark Wills PIVOT is a great facility and solves many an EAV (Entity - Attribute - Value) type transformation where we need the information held as data within a column to become columns in their own right. Now, in some cases that is relatively…
In SQL Server, when rows are selected from a table, does it retrieve data in the order in which it is inserted?  Many believe this is the case. Let us try to examine for ourselves with an example. To get started, use the following script, wh…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…

722 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