SQL查询 - 将行值返回为列

时间:2014-05-19 14:12:17

标签: sql

我有一张桌子:

Part    X   Y   
ABC     1   10  
ABC     2   20  
ABC     3   30  
ABC     4   40  
ABC     5   x   
ABC     6   x   
XYZ     1   50  
XYZ     2   60  
XYZ     3   70  
XYZ     4   80  
XYZ     5   x   
XYZ     6   x   
ETC     1   90  
ETC     2   100 
ETC     3   110 

我想以下列方式选择此数据:

Part    1   2   3   4
ABC     10  20  30  40
XYZ     50  60  70  80
ETC     90  110 120 130

这可能吗?

注意:

  • 结果标题= 1,2,3,4 =表格中的字段x
  • FieldX包含值1 - 18,我只对1-4
  • 感兴趣
  • 我后来也想把它加入到产品表中,我可以根据product.Supplier字段指定结果。

我认为子查询可能是要走的路,但在这方面没有经验。

感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:0)

我只是张贴这个,因为之前的答案似乎已经过时了。在不知道您的RDBMS的情况下,您可以MAX使用CASE

SElECT part,
    MAX(CASE WHEN X = 1 THEN Y END) Y1,
    MAX(CASE WHEN X = 2 THEN Y END) Y2,
    MAX(CASE WHEN X = 3 THEN Y END) Y3,
    MAX(CASE WHEN X = 4 THEN Y END) Y4
FROM YourTable
GROUP BY part

如果你是RDBMS会支持它,你可以使用PIVOT命令。