PostgreSQL创建子表并使用with子句

时间:2016-03-08 14:46:24

标签: postgresql subquery common-table-expression

我正在尝试测试用户的条件,然后选择主表中与条件匹配的所有事件。我觉得我做错了什么:

WITH users_table AS (
    SELECT
        user_name,
        SUM (CASE WHEN ( ud.age > 20 ) THEN 1  ELSE 0 END) AS UserEvents
    FROM users_data AS ud
    GROUP BY user_name
    )
SELECT users_table.user_name FROM users_table
WHERE users_table.UserEvents > 10
;

也就是说,我想使用with子句来创建一个包含20岁以上所有用户的表,然后在该表中选择仅使用具有10个以上事件的用户。

出于某种原因,我不断收到错误:

错误:不允许多个WITH子句。 SQL状态:42601

但我不明白为什么?另外,为什么“多个”带有条款......?只有一个条款。

祝福, -R

1 个答案:

答案 0 :(得分:0)

当您使用多个公用表表达式时,您只能使用WITH关键字一次。所以看起来应该是这样的:

WITH first_cte AS (
   SELECT ...
),
second_cte AS (
   SELECT ...
)