我有下表,这实际上是多个连接表的结果的最小示例。我现在想按'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解决。
答案 0 :(得分:0)
数据库在转置方面并不多。手头有一个模糊的列增长问题,我的意思是数据库如何处理可变数量的列?这不是电子表格。
这种转置排序通常在报表编写器中完成,而不是在SQL中完成。
...或者在程序中,比如在php中。
答案 1 :(得分:0)