【发布时间】:2021-05-09 10:46:44
【问题描述】:
我的 PostgreSQL 服务器上有两个架构,我正在尝试创建一个透视表:
WITH cte AS (
SELECT l.fcid, t.fixture_code, COUNT(f.fixture_type_id) AS count
FROM aim.locations as l
JOIN aim.fixture_instances as f
ON l.id = f.location_id
JOIN aim.fixture_types as t
ON f.fixture_type_id = t.id
GROUP BY l.fcid, t.fixture_code
)
SELECT *
FROM lab.CROSSTAB('SELECT fcid, fixture_code, SUM(count) FROM cte group by 1,2 order by 1,2',
'Select DISTINCT fixture_code from cte order by 1')
AS CT (FCID integer, "fx1" bigint, "fx2" bigint)
ORDER BY fcid;
但是,我收到一个错误:
ERROR: relation "cte" does not exist LINE 1: Select DISTINCT fixture_code from cte order by 1
当我只有一个架构时,查询有效。
我使用 CTE,因此可以使用查询创建视图。
这里有什么问题?
【问题讨论】:
-
如果您想在这些查询中访问它,请将 CTE 定义放在传递给函数的查询之前。
-
@stickybit 不确定你的意思。是不是已经像你描述的那样了。可以展示吗?谢谢!
-
不,不是我描述的那样。将 CTE 放入
crosstab()的参数 not 选择 fromcrosstab()--... crosstab('WITH ... SELECT ...', 'WITH ... SELECT ...', ...的查询 -
哦,我明白了。十分感谢! @sticky 位
标签: sql postgresql common-table-expression crosstab