【问题标题】:DB2 Convert Each Column to a Row based on IDDB2 根据 ID 将每一列转换为一行
【发布时间】:2021-09-10 13:37:16
【问题描述】:

不知道从哪里开始,我已经阅读了有关枢轴/横向的信息,但不完全了解它们的用例,所以我不确定它们是否适用于此。无论如何,它们似乎不在我的 DB2 版本中。

示例起始表

ID, Firstname, Lastname, Age
0, John, Smith, 30
1, Jane, Doe, 40
2, Fake, Name, 50

我希望将此表转为以下...

预期结果示例

Id, ColumnName, ColumnValue
0, Firstname, John
0, Lastname, Smith
0, Age, 30
1, Firstname, Jane
1, LastName, Doe
1, Age, 40
2, FirstName, Fake
2, LastName, Name
2, Age, 50

我该怎么做呢?此操作有名称吗?

谢谢!

【问题讨论】:

    标签: sql db2 pivot db2-luw


    【解决方案1】:

    DB2 中不存在枢轴语法,您可以像这样使用横向:

    with table1 (ID, Firstname, Lastname, Age) as (
      values
      (0, 'John', 'Smith', 30),
      (1, 'Jane', 'Doe', 40),
      (2, 'Fake', 'Name', 50)
    )
    select
      ID,rowtocolumns.*
    from table1
      cross join lateral (
        values
        ('Firstname', Firstname),
        ('Lastname', Lastname),
        ('Age', varchar(age))
      ) as rowtocolumns(ColumnName, ColumnValue)  
    

    【讨论】:

    • 太棒了,非常感谢。我以前用过这个,dbatodba.com/db2/how-to-do/…,但用提供的数据无法理解。使用我的示例数据确实帮助我理解。欣赏!
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多