使用雪花SQL将多行扁平化为1行

时间:2020-03-26 22:19:35

标签: sql snowflake-cloud-data-platform

我有一个这样的表:

id  col1 col2 col3 col4
1   Y    N    N    N  
1   N    N    Y    N
1   N    Y    N    N
1   N    N    N    N

我希望它看起来像这样:

id col1 col2 col3 col4
1  Y    Y    Y    N

我该怎么做

2 个答案:

答案 0 :(得分:2)

您可以使用MAX()

select id, max(col1), max(col2), max(col3), max(col4)
from t
group by id;

答案 1 :(得分:0)

如果想要的值不自然地高(因此您可以使用MAX)或自然地不低(因此使用MIN),则可以,并且您正在寻找一个状态,可以对该状态进行编码 进入

IFF(SUM(IFF(value = <target>,1,0)>0,<target>,<non-target>)

这实际上应该通过BOOLOR_AGG完成(具有您已发布的确切示例)。

select id, boolor_agg(col1), boolor_agg(col2), boolor_agg(col3), maxboolor_agg(col4)
from t
group by id;

否则,如果您真的想要超出假设的logical or之外进行一些更复杂的值聚合,则需要解释更多。