【问题标题】:how to join with complecated condition in redshift如何在红移中加入复杂的条件
【发布时间】:2021-12-09 14:02:16
【问题描述】:

我有下表1

id name
1  A
3  B

和表2

id label value
1   a    10
1   b    11
1   c    12
2   a    13
2   b    14
2   c    15 
3   a    16 
3   b    17
3   c    18

我想要的结果如下。我想在label=a and b 中加入 table1 和 table2 我想我必须在每种情况下加入两次..

id name a    b
1   A   10   11
3   B   16   17

我尝试关注一个,但我只得到label = a的结果

select *
from table1
left join table2 using(id)
where label in ('a')

有没有什么好的方法可以做到这一点? 我想我们需要转置

谢谢

【问题讨论】:

    标签: sql amazon-redshift


    【解决方案1】:

    Redshift 没有原生的数据透视函数,因此您需要使用 case 语句来完成:

    SELECT
        table1.id,
        table1.name,
        SUM(CASE WHEN table2.label = 'a' THEN table2.value END) AS a,
        SUM(CASE WHEN table2.label = 'b' THEN table2.value END) AS b
    FROM table1
    LEFT JOIN table2
    ON table1.id = table2.id
    GROUP BY table1.id, table1.name
    

    另请参阅此链接: Pivot for redshift database

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多