Oracle PL/SQL CONNECT BY PRIOR ... SQL Server 中的 START WITH 语句
Posted
技术标签:
【中文标题】Oracle PL/SQL CONNECT BY PRIOR ... SQL Server 中的 START WITH 语句【英文标题】:Oracle PL/SQL CONNECT BY PRIOR ... START WITH statement in SQL Server 【发布时间】:2018-01-24 05:17:47 【问题描述】: select distinct sel.empty_tu_loc_id, sel.loc_id from
(
SELECT CONNECT_BY_ROOT LOC_ID_PARENT AS empty_tu_loc_id, LN.LOC_ID AS loc_id
FROM LN_LOC_LOC LN
CONNECT BY PRIOR LOC_ID = LOC_ID_PARENT and link_type = 'PARENT'
START WITH LOC_ID_PARENT IN (SELECT e.loc_id FROM empty_tu_loc e inner join grp g on g.loc_id= e.loc_id)
) sel
left outer join empty_tu_loc e1 on e1.loc_id=sel.loc_id
where e1.loc_id is null
union all
SELECT distinct loc_id, loc_id FROM empty_tu_loc
);
我很困惑: 如何将此代码迁移到 ms sql-sever 2014?
【问题讨论】:
您的问题无疑已经在一般意义上的“sql server相当于oracle connect by prior”的一般意义上被问过 - 有一个谷歌,尝试一些事情,如果可以的话,用你尝试过的东西提出问题不要让它工作。这样一来,您的问题就不会被如此严厉地否决——通常 SO 用户会在很明显原始提问者已经做了一些努力时尝试提供帮助,而不仅仅是像有免费的代码编写服务一样倾倒在他们身上 【参考方案1】:您可以尝试递归公用表表达式 (CTE)。 看看这里 https://social.msdn.microsoft.com/Forums/en-US/bdab27a0-c1f5-477f-99ed-77f73cf0ea56/how-do-i-replace-the-usage-of-connect-by-prior-in-sql-server-2008r2-?forum=transactsql
【讨论】:
作为旁注,当引用不是 Stack Overflow 的站点时,就像您在此处对 MSDN 所做的那样,我们应该尝试在此处包含来自该站点的相关数据.. 如果 MSDN 曾经关闭,那么这样下来这个答案仍然有效并且没有断开的链接。或者您可以链接到另一个堆栈溢出帖子,而无需将其内容复制到此处。 SO 上的先前等价物肯定会对此连接提出疑问以上是关于Oracle PL/SQL CONNECT BY PRIOR ... SQL Server 中的 START WITH 语句的主要内容,如果未能解决你的问题,请参考以下文章
PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决(代码
PL/SQL连接Oracle,提示ORA-12504:TNS监听程序在connect-data中未获得service-name
Oracle PL/SQL - 根据条件对不同列进行选择、分组、排序、where-clause 的最佳方法?