Postgresql中列的唯一行

时间:2012-06-20 18:27:02

标签: postgresql pivot unpivot

我的数据表按如下方式排序:

Item    |   Sample  |   Value   |
---------------------------------
Part A  |   Top     |   1.0     |
Part A  |   Bottom  |   4.0     |
Part A  |   Left    |   3.0     |
Part A  |   Right   |   2.0     |
Part A  |   Center  |   5.0     |
Part B  |   Top     |   6.0     |
Part B  |   Bottom  |   1.0     |
Part B  |   Left    |   1.0     |
Part B  |   Right   |   5.0     |
Part B  |   Center  |   9.0     |
Part C  |   Top     |   7.0     |
Part C  |   Bottom  |   5.0     |
Part C  |   Left    |   1.0     |
Part C  |   Right   |   2.0     |
Part C  |   Center  |   1.0     |

我正在尝试进行进一步的统计分析。对于那些计算,数据输出将是理想的:

Item    |   Top     |   Bottom  |   Left    |   Right   |   Center  |
---------------------------------------------------------------------
Part A  |   1.0     |   4.0     |   3.0     |   2.0     |   5.0     |
Part B  |   3.0     |   1.0     |   1.0     |   5.0     |   9.0     |
Part C  |   7.0     |   5.0     |   1.0     |   2.0     |   1.0     |

我相信在MSSQL中你可以使用PIVOT或UNPIVOT函数来实现这一点,但我不确定在Postgresql中。我发现的所有类似解决方案看起来都很模糊。任何帮助或指导将不胜感激!

1 个答案:

答案 0 :(得分:0)

使用tablefunc扩展程序的crosstab()功能。

我最近发布了多个关于SO的链接和详细解释的例子。 Try a search