是否需要根据表中的唯一值将列分解为多个列?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否需要根据表中的唯一值将列分解为多个列?相关的知识,希望对你有一定的参考价值。
请帮助我在Excel和SQL / Redshift中使用合适的方法。
所以假设我有一个像这样的表:
我想将此列5分解为与该列中的唯一值一样多的列,并将第6列的相应值放入行中。基本上我只想要一行用于唯一的[column1,column2,column3]对。所以,我想要的结果如下:
答案
一个简单的SQL方法是将MAX()
与CASE
一起使用...
SELECT
column1,
column2,
column3,
column4,
MAX(CASE WHEN column5 = 'val1' THEN column6 END) AS val1,
MAX(CASE WHEN column5 = 'val2' THEN column6 END) AS val2,
MAX(CASE WHEN column5 = 'val3' THEN column6 END) AS val3
FROM
yourTable
GROUP BY
column1,
column2,
column3,
column4
在CASE
表达式中,如果column5不匹配,则CASE
的结果隐式为NULL
。
然后,在MAX()
中,任何NULL
值都被有效忽略。
这导致组合选择column6
的最高值,其中column5
是val1
/ val2
/ val3
。假设只有一个这样的匹配,它会选择一个匹配值。
以上是关于是否需要根据表中的唯一值将列分解为多个列?的主要内容,如果未能解决你的问题,请参考以下文章