Search code examples
sql-server-2005pivotunpivot

SQL Server 2005 - Pivot or unpivot


Need help to pivot/unpivot below table like the result, its for SQL Server 2005.

ID, Type, TypeValue

1, A, 10

1, A, 11

1, A, 12

1, B, 2

1, B, 3

1, C, 30

1, C, 31

Resultset:

ID, A, B, C

1, 10, 2, 30

1, 10, 2, 31

1, 11, 2, 30

1, 11, 2, 31

1, 12, 2, 30

1, 12, 2, 31

1, 10, 3, 30

1, 10, 3, 31

1, 11, 3, 30

1, 11, 3, 31

1, 12, 3, 30

1, 12, 3, 31


Solution

  • try this query

    Select A.ID, A.TYPEVALUE, B.TYPEVALUE, C.TYPEVALUE
    From (Select * From pivot_task Where TYPE = 'A') As A
    Left Join (Select * From pivot_task Where TYPE = 'B') As B on 1=1
    Left Join (Select * From pivot_task Where TYPE = 'C') As C On 1=1
    Order BY B.TYPEVALUE, A.TYPEVALUE, C.TYPEVALUE
    

    and the out put like this.

    ID          TYPEVALUE TYPEVALUE TYPEVALUE
    ----------- --------- --------- ---------
    1           10        2         30
    1           10        2         31
    1           11        2         30
    1           11        2         31
    1           12        2         30
    1           12        2         31
    1           10        3         30
    1           10        3         31
    1           11        3         30
    1           11        3         31
    1           12        3         30
    1           12        3         31