【问题标题】:Merging Multiple columns data to a single row in SQL [duplicate]将多列数据合并到SQL中的单行[重复]
【发布时间】:2013-07-19 00:02:42
【问题描述】:

我有一个表格,其中包含如下数据

Name |Reg_Type

aaa   reg_type1

aaa   reg_type2

bbb   reg_type3

aaa   reg_type5

bbb   reg_type4

bbb   reg_type1

但是,我想要一个用于返回结果集的 sql,例如:-

Name| Reg_type1|  Reg_type2  |Reg_type3  |Reg_type4  |Reg_type5  |Reg_type6

aaa      Y          Y            N           N          Y            N
bbb      Y          N            Y           Y          N            N

【问题讨论】:

  • 您想要单独的列还是将值连接起来?

标签: sql oracle


【解决方案1】:

尝试透视查询:

select * from mytable
  pivot (count(reg_type)
           for reg_type in ('reg_type1',
                            'reg_type2',
                            'reg_type3',
                            'reg_type4',
                            'reg_type5'));

给出结果:

NAME    'REG_TYPE1'  'REG_TYPE2'  'REG_TYPE3'  'REG_TYPE4'  'REG_TYPE5'
aaa      2            1            0            0            1
bbb      0            0            1            1            0

SQLFiddle here.

分享和享受。

【讨论】:

    【解决方案2】:

    listagg 函数正是您所需要的。你可以在这里了解它:

    http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php

    SELECT name, LISTAGG(REG_TYPE,'|') WITHIN GROUP (ORDER BY reg_type) AS REG
    FROM REG
    GROUP BY NAME;
    

    【讨论】:

    • 大家好,我想要一个单独的专栏。 Reg_type1,Reg_type2,Reg_type3....都是单独的列。
    【解决方案3】:

    在Oracle 中,连接运算符是||。所以,应该是

    选择名称 || '|' || Reg_type1 || '|' || Reg_type2 .....来自表名.....

    【讨论】:

    • 没有 Reg_type
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多