【问题标题】:Redshift Product of Column Values列值的红移积
【发布时间】:2017-03-10 05:38:51
【问题描述】:

如何在 redshift 中生成多列的所有可能组合?

例如对于名称和组的所有组合,

| name  | group | value |
+-------+-------+-------|
| a     | 1     | 1     |
| a     | 2     | 1     |
| a     | 3     | 1     |
| b     | 1     | 1     |
| b     | 2     | 1     |
| c     | 3     | 1     |

我想获得以下内容:

| name  | group | value |
+-------+-------+-------|
| a     | 1     | 1     |
| a     | 2     | 1     |
| a     | 3     | 1     |
| b     | 1     | 1     |
| b     | 2     | 1     |
| b     | 3     | Null  |
| c     | 1     | Null  |
| c     | 2     | Null  |
| c     | 3     | 1     |

【问题讨论】:

    标签: sql postgresql amazon-redshift


    【解决方案1】:

    您可以使用cross joinleft join 来做到这一点:

    select n.name, g.group, t.value
    from (select distinct name from t) n cross join
         (select distinct group from t) g left join
         t
         on t.name = n.name and t.group = g.group
    order by 1, 2;
    

    如果您在另一个表中有不同的值,则不必使用子查询来获取它们。

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      相关资源
      最近更新 更多