Skip to main content

Pivot Table in SQL SERVER 2005


SELECT
/* <non-pivoted column>,

[first pivoted column] AS <column name> ,

[second pivoted column] AS <column name> ,

...

[last pivoted column] AS <column name> */

ItemCode, ItemName,
[1] AS Price1,
[2] AS Price2,
[3] AS Price3,
[4] AS Price4,
[5] AS Price5,
[6] AS Price6,
[7] AS Price7,
[8] AS Price8,
[9] AS Price9,
[10] AS Price10
FROM
-- <this is the query that produces the data>
(SELECT A.ItemCode, A.ItemName, B.PriceList, B.Price
FROM OITM A INNER JOIN ITM1 B ON A.ItemCode=B.ItemCode
WHERE A.ItemCode LIKE '11%') AS SourceTable

PIVOT
(
-- <aggregation function>
MAX(Price)

FOR
--
<column that contains the values that will become column headers>
PriceList IN

--
([first pivoted column], [second pivoted column],... [last pivoted column])

([1], [2], [3], [4], [5], [6], [7], [8], [9], [10])
) AS pvt
ORDER BY ItemCode;

here is the equivalent code for SQL SERVER 2000

SELECT A.ItemCode, A.ItemName,
MAX(CASE B.PriceList WHEN 1 THEN B.Price ELSE 0 END) AS Price1,
MAX(CASE B.PriceList WHEN 2 THEN B.Price ELSE 0 END) AS Price2,
MAX(CASE B.PriceList WHEN 3 THEN B.Price ELSE 0 END) AS Price3,
MAX(CASE B.PriceList WHEN 4 THEN B.Price ELSE 0 END) AS Price4,
MAX(CASE B.PriceList WHEN 5 THEN B.Price ELSE 0 END) AS Price5,
MAX(CASE B.PriceList WHEN 6 THEN B.Price ELSE 0 END) AS Price6,
MAX(CASE B.PriceList WHEN 7 THEN B.Price ELSE 0 END) AS Price7,
MAX(CASE B.PriceList WHEN 8 THEN B.Price ELSE 0 END) AS Price8,
MAX(CASE B.PriceList WHEN 9 THEN B.Price ELSE 0 END) AS Price9,
MAX(CASE B.PriceList WHEN 10 THEN B.Price ELSE 0 END) AS Price10
FROM OITM A INNER JOIN ITM1 B ON A.ItemCode=B.ItemCode
GROUP BY A.ItemCode, A.ItemName
ORDER BY ItemCode
GO

Comments

Popular posts from this blog

Crystal Report 2010 - Failed to load database information

"Failed to load database information" error when i try deploy my program with CR 2010 using TTX file as report definition this is because there is missing .dll, call "CRDB_FIELDDEF.DLL"..u need to manually copy the file to "C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86" folder then the report is loading again it said that TTX is old tech but i'm still using it because i don't need to connect the report to any DB, but until i found new one to replace :D check this link to read it [EDIT 25 Jan 2011] i think i'll using ADO.NET Dataset next time :D until then

Resolve Collation error in SQL Server

i often get this error when trying to JOIN some table Cannot resolve the collation conflict between "SQL_Latin1_General_CP850_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. u need to use COLLATION when performing the JOIN, something like this SELECT field1 FROM table1 INNER JOIN table2 ON table1.field3 COLLATE DATABASE_DEFAULT = table2.field4 COLLATE DATABASE_DEFAULT i found this when trying to JOIN, maybe it affect other areas..until i found one see u

Session timeout problem in IIS

Hi, Long time no post, i will try to post again since i came out searching a typical solution over and over again :D Now i'm gonna post about session. Since i got this from other link so here it is So I started looking into the IIS settings and came to know that i missed two things to change : Application pool’s Idle Time-out (minutes) Session state  – State server’s Time-out (seconds) Once I have changed above settings than after Session timeout worked. So after that I have made one checklist that can help us to validate Session timeout settings, here i am sharing it with you as well so that you will also get some benefits from it : Application Pool  – Advanced Settings Menu – Process Model – Idle Time-out (minutes) Sites –  Session State  – Cookie Settings – Time-out (minutes) If you are using  State Server  or  SQL Server  to manage your session (instead of InProcess), Here is the steps to follow :    ...