如何在红移中加入复杂的条件
Posted
技术标签:
【中文标题】如何在红移中加入复杂的条件【英文标题】: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')
有没有什么好的方法可以做到这一点? 我想我们需要转置
谢谢
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何在红移中加入复杂的条件的主要内容,如果未能解决你的问题,请参考以下文章