交叉表查询中的Postgresql WITH子句

Tha*_*ara 8 postgresql crosstab common-table-expression

我创建一个大型查询作为公用表表达式 - month_index using WITH子句.是否可以在交叉表查询的源代码sql中引用此公用表表达式?

当我确实得到错误关系"month_index"不存在

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(..)
Run Code Online (Sandbox Code Playgroud)

我使用Postgresql 9.3.

小智 4

您希望将 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(..)
Run Code Online (Sandbox Code Playgroud)