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
有零行或一行。
我对 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
有零行或一行。