我正在尝试测试用户的条件,然后选择主表中与条件匹配的所有事件。我觉得我做错了什么:
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
答案 0 :(得分:0)
当您使用多个公用表表达式时,您只能使用WITH
关键字一次。所以看起来应该是这样的:
WITH first_cte AS (
SELECT ...
),
second_cte AS (
SELECT ...
)