是否需要根据表中的唯一值将列分解为多个列?

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的最高值,其中column5val1 / val2 / val3。假设只有一个这样的匹配,它会选择一个匹配值。

以上是关于是否需要根据表中的唯一值将列分解为多个列?的主要内容,如果未能解决你的问题,请参考以下文章

根据列值将一行分解/拆分为多行

Python:根据特定值将列拆分为串联的行

如何根据另一列值将一列分成多个?

根据列值将一行拆分为多行

将列字符串拆分为多个列字符串

pyodbc - 使用默认值将列添加到 MS Access