【问题标题】:Pivoting in Sybase SQL Query?在 Sybase SQL 查询中进行透视?
【发布时间】:2011-12-28 04:19:31
【问题描述】:

我正在寻找一种方法来转换以下结果...

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

进入如下结构....

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

列数是固定的(始终是部门/部门/类)。该查询是为 Sybase 设计的……目前还无法弄清楚如何实现这种旋转。有什么建议吗?

【问题讨论】:

  • 用什么链接你想变成列的任何 3 行?

标签: sql sybase pivot


【解决方案1】:

您需要一些键来定义 3 行的集合。然后,你自己加入

所以对于这样的数据...

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

你应该有

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'

【讨论】:

    【解决方案2】:

    旋转到固定数量的列的经典方法是这样的:

    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
    

    【讨论】:

      猜你喜欢
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多