我有这样一张table:
| 身份证|P级|C级|A类|B|
| - ------|- ------|- ------|- ------|- ------|
| 1个|一百|三个|a1|b1|
| 第二章|一百零一|三个|a2|b2|
| 三个|一百零二|三个|a3|b3|
| 四个|一百零三|三个|a4|b4|
| 五个|一百|四个|a5|b5|
| 六个|一百零一|四个|a6|b6|
| 七|一百零二|四个|a7|b7|
| 八个|一百零三|四个|a8|b8|
我想得到一个新的转置结构,像这样:
| P级|_3A|_3B|_4A|_4B|
| - ------|- ------|- ------|- ------|- ------|
| 一百|a1|b1|a5|b5|
| 一百零一|a2|b2|a6|b6|
| 一百零二|a3|b3|a7|b7|
| 一百零三|a4|b4|a8|b8|
正如你所看到的,新的字段名已经从原表的C字段中提取出来了。有什么方法可以用SQL来实现吗?
2条答案
按热度按时间nnsrf1az1#
Postgres在数组和
crosstab
方面有一些高级功能,但是,一种独立于数据库的方法是使用聚合:这将在SQLite和Postgres(以及几乎任何其他数据库)中工作。
n6lpvg4x2#
测试数据
查询
结果