交叉表查询中的Postgresql WITH子句
我使用WITH子句创建了一个大型查询,作为一个公共表表达式-month_索引。是否可以在交叉表查询的源sql中引用此公共表表达式 当我确实犯了一个错误 关系月份索引不存在交叉表查询中的Postgresql WITH子句,postgresql,common-table-expression,crosstab,Postgresql,Common Table Expression,Crosstab,我使用WITH子句创建了一个大型查询,作为一个公共表表达式-month_索引。是否可以在交叉表查询的源sql中引用此公共表表达式 当我确实犯了一个错误 关系月份索引不存在 WITH month_index AS ( SELECT ... ) SELECT * FROM CROSSTAB( 'SELECT rowid AS row_name, CONCAT(''m'',monthno) AS category, nic5dindex AS value FROM
WITH month_index AS
(
SELECT ...
)
SELECT * FROM CROSSTAB(
'SELECT rowid AS row_name,
CONCAT(''m'',monthno) AS category,
nic5dindex AS value
FROM month_index',
'*<categorysql>*')
AS ct(..)
我使用Postgresql 9.3。您希望将CTE完全包含在交叉表中。 更像这样。。。您可以在交叉表中使用CTE,但反之亦然
SELECT *
FROM CROSSTAB(
$$
WITH month_index AS
(
SELECT rowid AS row_name,
CONCAT(''m'',monthno) AS category,
nic5dindex AS value
FROM source_data_table
)
SELECT * FROM month_index
,
'*<categorysql>*'
$$
)
AS ct(..)
过时且不受支持的版本8.3没有通用表表达式。但我认为,即使支持的版本有CTE,交叉表功能也无法访问CTE。您需要创建一个视图,可以在传递给交叉表函数的SELECT语句中引用该视图。