sql - 如何创建使用另一个CTE作为数据进一步限制的CTE?

标签 sql common-table-expression

我在这里搜索了此问题,但找不到它,如果我们已经在网站上找到它,请重定向我。

我正在寻找一种创建CTE的方法,该方法使用另一个CTE作为数据来进一步限制。我有一个CTE,可以为我创建一个报告,但是我想使用现有CTE通过另一个输入来缩小此报告的范围。

希望我的问题清楚。

最佳答案

您可以将2个(或更多)CTE链接在一起。

例如

with ObjectsWithA as
(
  select * from sys.objects
  where name like '%A%'
),
ObjectsWithALessThan100 as
(
  select * from ObjectsWithA
  where object_id < 100
)
select * from ObjectsWithALessThan100;


...

以下是同一示例,其中包含更多的“拼写”名称/别名”

with ObjectsWithA (MyObjectId , MyObjectName) as
(
  select object_id as MyObjIdAlias , name as MyNameAlias from sys.objects
  where name like '%A%'
),
ObjectsWithALessThan100 as
(
  select * from ObjectsWithA theOtherCte
  where theOtherCte.MyObjectId < 100
)
select lessThan100Alias.MyObjectId , lessThan100Alias.MyObjectName from ObjectsWithALessThan100 lessThan100Alias order by lessThan100Alias.MyObjectName;

关于sql - 如何创建使用另一个CTE作为数据进一步限制的CTE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032293/

相关文章:

sql - 计算雪花中的警报洪水

mysql - 显示 mysql 查询中缺失日期的计数

sql - 在postgresql中插入多列 "with"

sql - 使用 CTE 进行字符串拆分的有效方法

与子查询相比,SQL 查询使用 With 需要更长的时间

sql - 选择以位于同一表或其他表中的指定值开头的值

MYSQL - 每 5 分钟获取一次数据,并对前几行求和以显示聚合数据

SQL 查询 - 与连接相反?

sql - 使用递归 CTE 来解析组,而不是层次结构

sql-server - 在 CTE (With) 中设置和定义变量并在另一个 CTE 中使用它们