我正在使用 Postgresl 9.2
我需要一个由此创建的交叉表:
select id, imp from sg_imp_id
(有很多比这更多的行)
id | imp |
-------+-------+
1 | 111 |
2 | 111 |
2 | 121 |
2 | 122 |
3 | 131 |
4 | 154 |
.... ....
像这样:
id | x111 | x121 | x122 | x131 | x154 |
---------+------+------+------+------+------+
1 | 1 | 0 | 0 | 0 | 0 |
2 | 1 | 1 | 1 | 0 | 0 |
3 | 0 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 0 | 1 |
每imp
行都有一列,只要id
有那个imp
数字,就放置一个 1。如果它没有那个imp
数字,那么一个 0 应该在那个位置。我对该crosstab()
功能的了解非常有限。目前有很多不同的“x111,x112,x113”值行,所以使用该case
子句不太可能。