【发布时间】:2011-04-23 15:11:02
【问题描述】:
我最近在寻找一种方法来构建某些数据的特定视图时了解了递归公用表表达式 (CTE)。在花了一段时间写出我的查询的第一次迭代是如何工作的之后,我把它变成了一个 CTE 来观察整个事情的发展。我很惊讶地看到分组不起作用,所以我只是用“选择前 1 个,排序依据”等效项替换它。我再次对不允许使用“TOP”感到惊讶,并发现所有这些子句都不允许在 CTE 的递归部分中使用:
- 不同
- 分组依据
- 有
- 顶部
- 左
- 正确
- 外连接
所以我想我有两个问题:
- 为了更好地理解我的情况和SQL,为什么不允许这些子句?
- 如果我需要使用这些子句中的某些子句进行某种递归,我唯一的选择是编写递归存储过程吗?
谢谢。
【问题讨论】:
标签: sql sql-server tsql sql-server-2005 recursion