Oracle 中 SQL CTE 的正确语法是什么?

What is the proper syntax for a SQL CTE in Oracle?

我对 SQL 还是很陌生,正在尝试使用 CTE。我的查询没有按预期工作,我认为这是由于这部分查询中的语法不正确造成的:(select "revenue" * 20 from table_name)。我做错了什么?

WITH cte_test (country, zipcode, revenue) 
as (
select country, zipcode, revenue+1
from table_name)
select *, (select "revenue" * 20 from table_name)
from cte_test;

您不需要列出 CTE 的列(尽管这是允许的)。我会这样写:

WITH cte_test as (
      select country, zipcode, revenue+1 as revenue
      from table_name
     )
select t.*, (select revenue * 20 from table_name)
from cte_test t;

备注:

  • 我认为一个问题是 * 没有 table 资格。
  • 您的子查询将生成 运行 次错误,除非 table_name 有零行或一行。