sql-server - SQL Server:为没有游标或函数的每条记录运行单独的 CTE
问题描述
给定具有一列LocationID
和许多记录的表 A,
是否可以在不使用游标(while fetch 循环)或函数(通过交叉应用)的情况下为每条记录完全运行 CTE?
我无法从表 A 运行 CTE,因为 CTE 将深入通过父子层次表(ParentID、ChildID)来查找表 A 的每个 LocationID 的特定类型的所有后代。似乎如果我使用表A做CTE,它将混合表A中所有LocationID的孩子。
基本上我需要为表 A 的每个 LocationID 单独运行一个 CTE,并放入一个包含 LocationID 和 ChildID 列的表(LocationID 是表 A 中的那些,而 ChildID 都是通过 CTE 找到的特定类型的后代)。
解决方案
这是您的基本布局。
;with CTE AS
(
select .......
)
select *
from CTE
cross apply (select distinct Location from TableA) a
where CTE.Location=a.Location
一些样本数据和预期结果将提供更好的答案。
推荐阅读
- javascript - 避免回调,并嵌套 if 语句
- c - GNU Make 4.2.1 中意外的先决条件跳过
- python - Python: can view objects show keys of zombie dictionaries?
- android - Lint 因未解决的引用而失败:它
- c# - Unity3D - 按角度到点的顺序列表
- python - 如何在 python 中实现数据并行化(multiprocessing.Pool)装饰器?
- bash - 如何避免更改我在所有 scipts 中使用的 bash 命令
- python - 如何检查是否从客户端收到字节?
- php - 生成的php结果出现然后迅速消失
- java - 从文本文件创建对象时检查无关的空行