SQL组由一列组成,按另一列排序并转置第三列

时间:2014-03-07 09:46:32

标签: sql select group-by sql-order-by

我有下表,这实际上是多个连接表的结果的最小示例。我现在想按'person_ID'进行分组,并将所有'value'条目放在一行中,在feature_ID之后排序。

person_ID  | feature_ID | value
123        | 1          | 1.1
123        | 2          | 1.2
123        | 3          | 1.3
123        | 4          | 1.2
124        | 1          | 1.0
124        | 2          | 1.1
...

结果应为:

123  |  1.1  |  1.2  | 1.3  |  1.2
124  |  1.0  |  1.1  | ...

应该存在一个优雅的SQL查询解决方案,我既不能想出也找不到它。

对于快速重建,这将是示例数据:

create table example(person_ID integer, feature_ID integer, value float);
insert into  example(person_ID, feature_ID, value) values
  (123,1,1.1),
  (123,2,1.2),
  (123,3,1.3),
  (123,4,1.2),
  (124,1,1.0),
  (124,2,1.1),
  (124,3,1.2),
  (124,4,1.4); 

编辑:每个人在现实生活中都有6374个条目。

我正在使用PostgreSQL 8.3.23数据库,但我认为这应该可以用标准SQL解决。

2 个答案:

答案 0 :(得分:0)

数据库在转置方面并不多。手头有一个模糊的列增长问题,我的意思是数据库如何处理可变数量的列?这不是电子表格。

这种转置排序通常在报表编写器中完成,而不是在SQL中完成。

...或者在程序中,比如在php中。

答案 1 :(得分:0)