小编use*_*946的帖子

SQL Server等效于Oracle的"CONNECT BY PRIOR"和"ORDER SIBLINGS BY"

我有这个Oracle代码结构,我正在尝试转换为SQL Server 2008 (注意:我在方括号'[]'中使用了通用名称,封闭的列名和表名,并做了一些格式化以使代码更多可读):

SELECT [col#1], [col#2], [col#3], ..., [col#n], [LEVEL] 
FROM (SELECT [col#1], [col#2], [col#3], ..., [col#n] 
      FROM [TABLE_1] 
      WHERE ... ) 
CONNECT BY PRIOR [col#1] = [col#2] 
START WITH [col#2] IS NULL 
ORDER SIBLINGS BY [col#3]
Run Code Online (Sandbox Code Playgroud)

什么是上述代码的SQL Server等效模板

具体来说,我正在努力与LEVEL和'ORDER SIBLINGS BY'Oracle构造.

注意: 上面的"代码"是一组Oracle过程的最终输出.基本上,'WHERE'子句是动态构建的,并根据传递的各种参数而变化.以"CONNECT BY PRIOR"开头代码块是硬编码的.


以供参考:

SQL SERVER文章中关于ORACLE的连接模拟很接近,但它没有解释如何处理'LEVEL'和'ORDER SIBLINGS'结构.......我的思绪在变化!

SELECT name 
  FROM emp
  START WITH name = …
Run Code Online (Sandbox Code Playgroud)

sql-server oracle connect-by recursive-query siblings

6
推荐指数
1
解决办法
2万
查看次数