我的子查询分解 (WITH) 子句出错
Error in my Subquery Factoring (WITH) Clause
我在 运行 这个脚本时出错 :
WITH q AS (
SELECT COUNT(id)
FROM test
)
SELECT 1,
CASE
WHEN q=0 then 'toto'
ELSE 'titi'
END
FROM dual;
我必须使用子查询分解 (WITH
) 子句。
我的想法是当计数等于 0 时显示 'toto'
,否则我必须显示 'titi'
。
为结果使用别名,FROM q
WITH q AS (
SELECT COUNT(id) as total
FROM test
)
SELECT 1,
CASE
WHEN q.total = 0 THEN 'toto'
ELSE 'titi'
END
FROM q;
您可以将其简化为:
SELECT 1,
CASE COUNT(*) WHEN 0 then 'toto' ELSE 'titi' END
FROM test;
您的查询中的错误是您创建了一个命名子查询 q
,但随后您从 DUAL
table 中选择了列 q
(这确实没有列 q
).
您可以这样修正您的查询:
WITH q AS (
SELECT COUNT(id) AS cnt -- name this column
FROM test
)
SELECT 1,
CASE WHEN cnt = 0 -- use the column you named previously
THEN 'toto'
ELSE 'titi'
END
FROM q; -- use the named subquery q not the dual table
我在 运行 这个脚本时出错 :
WITH q AS (
SELECT COUNT(id)
FROM test
)
SELECT 1,
CASE
WHEN q=0 then 'toto'
ELSE 'titi'
END
FROM dual;
我必须使用子查询分解 (WITH
) 子句。
我的想法是当计数等于 0 时显示 'toto'
,否则我必须显示 'titi'
。
为结果使用别名,FROM q
WITH q AS (
SELECT COUNT(id) as total
FROM test
)
SELECT 1,
CASE
WHEN q.total = 0 THEN 'toto'
ELSE 'titi'
END
FROM q;
您可以将其简化为:
SELECT 1,
CASE COUNT(*) WHEN 0 then 'toto' ELSE 'titi' END
FROM test;
您的查询中的错误是您创建了一个命名子查询 q
,但随后您从 DUAL
table 中选择了列 q
(这确实没有列 q
).
您可以这样修正您的查询:
WITH q AS (
SELECT COUNT(id) AS cnt -- name this column
FROM test
)
SELECT 1,
CASE WHEN cnt = 0 -- use the column you named previously
THEN 'toto'
ELSE 'titi'
END
FROM q; -- use the named subquery q not the dual table