Sql 需要根据表中的唯一值将一列分解为多列吗?

Sql 需要根据表中的唯一值将一列分解为多列吗?,sql,excel,pivot,amazon-redshift,Sql,Excel,Pivot,Amazon Redshift,请在Excel和SQL/Redshift中帮助我找到合适的方法 假设我有一张像这样的桌子: 我想将第5列分解为该列中唯一值的列,并将第6列的相应值放入行中。基本上,我只需要一行作为唯一的[column1,column2,column3]对。因此,我希望得到如下结果: 实现这一点的简单SQL方法是将MAX()与CASE一起使用 SELECT column1, column2, column3, column4, MAX(CASE WHEN column5 = 'val1' T

请在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
表达式中,如果第5列不匹配,则
CASE
的结果隐式为
NULL

然后,在
MAX()


这会导致组合选择
列6
的最大值,其中
列5
val1
/
val2
/
val3
。假设只有一个这样的匹配,它会选择一个匹配值。

请不要链接到数据的图像。请将数据复制到您的问题中,并使用降价控件对其进行格式化。通过这种方式,我们可以在问题的上下文中看到数据,输入和输出相邻,并在必要时将数据复制到应用程序(如SQLFIDLE)中。另外,您是在Excel中还是在红移中执行此操作?