Wrox Home  
Search P2P Archive for: Go

  Return to Index  

sql_language thread: pivot table sql server syntax


Message #1 by "David Lewis" <davidl@s...> on Sat, 11 Jan 2003 00:20:52
David,

You should group by ID and use an aggregate function to compute the column 
values. I believe this should work:

SELECT ID,
       MAX(CASE TheDay WHEN 'Fri -- 1/10' THEN InOut END) AS [Fri -- 1/10],
       MAX(CASE TheDay WHEN 'Sat -- 1/11' THEN InOut END) AS [Sat -- 1/11],
       MAX(CASE TheDay WHEN 'Sun -- 1/12' THEN InOut END) AS [Sun -- 1/12]
FROM tblTempToTab
GROUP BY ID

-Lam


> Sorry 'bout a basic question, but I have looked so long at this that I 
c> an't figure it out. 

> I have a table of data that looks like this: 

> ID | TheDay     | InOut 
1>  | Fri -- 1/10 | In 
1>  | Sat -- 1/11 | Am 
1>  | Sun -- 1/12 | PM 
2>  | Fri -- 1/10 | AM 
2>  | Sat -- 1/11 | AM 
2>  | Sun -- 1/12 | AM 

> And would like to pivot it to look like this: 
I> D | Fri -- 1/10 | Sat -- 1/11 | Sun -- 1/12 
1>   | IN          | AM          | PM 
2>   | AM          | AM          | AM 

> I have tried many variations of 

> SELECT ID, 
C> ASE TheDay WHEN 'Fri -- 1/10 ' THEN InOut END as [Fri -- 1/10 ], 
C> ASE TheDay WHEN 'Sat -- 1/11 ' THEN InOut END as [Sat -- 1/11 ], 
C> ASE TheDay WHEN 'Sun -- 1/12 ' THEN InOut END as [Sun -- 1/12 ] 
F> ROM tblTempToTab 
G> ROUP BY ID, InOut, TheDay 

> But I get result sets looking like: 

> ID | Fri -- 1/10 | Sat -- 1/11 | Sun -- 1/12 
1>   | In          | Null        | Null 
1>   | Null        | AM          | Null 
1>   | Null        | Null        | PM 
2>   | AM          | Null        | Null 
2>   | Null        | AM          | Null 
2>   | Null        | Null        | AM 

> 
A> ny advice, anybody? TIA D. Lewis

  Return to Index