【问题标题】:Lateral Unnest -SQL横向嵌套-SQL
【发布时间】:2019-02-15 11:38:15
【问题描述】:

Lateral Unnest -ing 给我带来了一些问题。

我有一张桌子 看起来像:

Name  | Info
------|------
  A   | Info1, Info2, Info3
  B   | Info1, Info 2, Info3

我希望它看起来像:

Name  | Info
------|------
 A    | Info1 
 A    | Info2 
 A    | Info3 
 B    | Info1 
 B    | Info2 
 B    | Info3 

里面还有几列。我想都保留它们。 有什么想法吗?

【问题讨论】:

    标签: sql postgresql unnest


    【解决方案1】:

    如果你想使用unnest():

    select t.name, trim(i) as info
    from t cross join lateral
         unnest(string_to_array(t.info, ',')) i;
    

    你不需要使用unnest(),因为你可以直接拆分成一个数组:

    select t.name, trim(i) as info
    from t cross join lateral
         regexp_split_to_table(t.info, ',') i;
    

    【讨论】:

    • 谢谢,我试过了,但它会将所有其他列放在一个列中?如果我想将其他列也保留在列中怎么办?呐。 | CB|CC|信息 ------|------|----|-- A | xyz|xyz|Info1, Info2, Info3 B | xyz|xyz|Info1, Info2, Info3 Na 。 | CB|CC|信息 ------|------|----|-- A | xyz|xyz|Info1 A | xyz|xyz|Info2 A | xyz|xyz|Info3 B | xyz|xyz|信息1 B | xyz|xyz|Info2 B | xyz|xyz|Info3
    • @somanyquestions 您需要明确列出列:select t.name, t.some_value, t.some_date, .... , trim(i) as info from ...:rextester.com/KBWA21456
    • @somanyquestions 。 . .您将列出这些列。而且,如果这不能回答问题,请提出 new 问题。这很清楚地涉及两个特定的列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2017-12-03
    • 2020-12-07
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多