Pivoting in Sybase SQL Query?

后端 未结 2 995
执念已碎
执念已碎 2021-01-13 07:56

I am looking for a way to pivot the following results...

ID | Group_Level | Group_Values
1  | Division    | Value 1 
2  | Department  | Value 2
3  | Class            


        
相关标签:
2条回答
  • 2021-01-13 08:04

    The classic way to pivot to a fixed number of columns is like this:

    select id,
    max (case when group_level = 'Division' then Group_Values else null end) Division,
    max (case when group_level = 'Department' then Group_Values else null end) Department,
    max (case when group_level = 'Class' then Group_Values else null end) Class
    from
    YourTable
    group by id
    
    0 讨论(0)
  • 2021-01-13 08:26

    You need some key to define the set of 3 rows. Then, you just self JOIN

    So for data like this...

    ID | GroupID | Group_Level | Group_Values
    1  | 1 | Division    | Value 1
    2  | 1 | Department  | Value 2
    3  | 1 | Class       | Value 3
    4  | 2 | Division    | Value 1
    5  | 2 | Department  | Value 2
    6  | 2 | Class       | Value 3
    

    you'd have

    SELECT
       Div.GroupID, Div.Group_Values, Dept.Group_Values, Cl.Group_Values
    FROM
       MyTable Div
       JOIN
       MyTable Dept ON Div.GroupID = Dept.GroupID
       JOIN
       MyTable Cl ON Div.GroupID = Cl.GroupID
    WHERE
       Div.Group_Level = 'Division'
       AND
       Dept.Group_Level = 'Department'
       AND
       Cl.Group_Level = 'Class'
    
    0 讨论(0)
提交回复
热议问题