【发布时间】:2017-04-14 19:17:23
【问题描述】:
我最近从 SQL Server 切换到 PostgreSQL,并试图找到等效的数据透视函数。我无法使用交叉表获得所需的输出,而我可以使用 SQL Server 实现。
样本数据。
CREATE TABLE loc
AS
SELECT location, sub_location, step, amount
FROM ( VALUES
( 100 , '100_A', 'step_1', 2 ),
( 100 , '100_A', 'step_2', 7 ),
( 100 , '100_A', 'step_3', 6 ),
( 100 , '100_B', 'step_1', 5 ),
( 100 , '100_B', 'step_2', 8 ),
( 100 , '100_B', 'step_3', 9 )
) AS t(location, sub_location, step, amount);
我正在尝试实现以下结果集。
Location Sub_location Step_1 Step_2 Step_3
-------- ------------ ------ ------ ------
100 100_A 2 7 6
100 100_B 5 8 9
我可以很容易地实现这是 MS SQL。还有我的交叉表查询,
Select * from crosstab
(
'select location, sub_location, step, amount from loc',
'select distinct step from loc'
)
as final_result(location varchar,sub_location varchar, step_1 int, step_2 int, step_3 int);
我只看到一排而不是两排。无论如何要克服 postgres 中的这个限制。
【问题讨论】:
-
这是我第一次发问题,请不要介意格式。
-
你应该标记这个并要求管理员迁移到Database Administrators
标签: postgresql crosstab composite-key