如何在红移中加入复杂的条件

how to join with complecated condition in redshift

我有下表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

我想要的结果是 following.I 我想在 label=a and b 中加入表 1 和表 2 我想我必须在每个条件下加入两次..

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')

有什么好的方法可以实现吗? 我想我们需要转置

谢谢

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

另见 link: Pivot for redshift database