【问题标题】:oracle SQL Concatenate 2 columns based on conditionoracle SQL根据条件连接2列
【发布时间】:2020-07-05 13:56:46
【问题描述】:

假设我有一张桌子:

+----+------------+------------+
| ID |   NAME1    |     NAME2  |
+----+------------+------------+
| A1 |    DAVE    |    DAN     |
| A1 |    DOR     |    MON     |
| A2 |    STEPHAN |    ARKEL   |
| A3 |    ASH     |    CATCHAM |
| A4 |    RON     |    DON     |
| A4 |    OFIR    |    DOL     |
| A4 |    OFRA    |    SOL     |
+----+------------+------------+

我想基于 ID 连接,如果下一行具有相同的 id 添加两个名称,如下所示:

+----+-----------------------------------+
| ID |             NEW_NAME              |
+----+-----------------------------------+
| A1 |    DAVE~~DAN^^DOR~~MON            |
| A2 |    STEPHAN~~ARKEL                 |
| A3 |    ASH~~CATCHAM                   |
| A4 |    RON~~DON^^OFIR~~DOL^^OFRA~~SOL |
+----+-----------------------------------+

谢谢。

【问题讨论】:

    标签: sql oracle string-concatenation


    【解决方案1】:

    你可以这样做:

    select
      id,
      listagg(name1 || '~~' || name2, '^^') 
        within group (order by name1, name2) as new_name
    from t
    group by id
    

    请参阅SQL<>Fiddle 的运行示例。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多