【发布时间】:2015-06-21 19:47:01
【问题描述】:
我看过很多帖子,这些帖子涉及如何将 Oracle“先连接”语句转换为 SQL Server 公用表表达式。但是,我有一个 Oracle“先连接”语句,上面有一个“以 ('value1','value2','value3') 中的字段名开头”子句,我没有看到任何关于如何将此转换为 SQL Server。我相信这被认为是“自下而上”的递归。
这是我的 Oracle 查询:
select distinct KEY
from MY_HIERARCHICAL_TABLE
connect by prior PARENT_KEY = KEY
start with KEY in ('CHILD-A1','CHILD-C1')
示例表:
MY_HIERARCHICAL_TABLE
---------------------
KEY
PARENT_KEY
样本数据:
KEY PARENT_KEY
--------- ----------
TOP null
PARENT-A TOP
CHILD-A1 PARENT-A
CHILD-A2 PARENT-A
PARENT-B TOP
CHILD-B1 PARENT-B
PARENT-C TOP
CHILD-C1 PARENT-C
我的查询应该如下工作:
- CHILD-A1 及其父母将包括在内:TOP、PARENT-A、CHILD-A1
- 将包括CHILD-C1及其父母:TOP、PARENT-C、CHILD-C1
- CHILD-A2 将被排除在外,因为 CHILD-A2 不在我的列表中。 PARENT-A 将被包括在内,因为 CHILD-A1 在我的列表中。
- PARENT-B 和 CHILD-B1 将被排除在外,因为 CHILD-B1 不在我的列表中。
- 最终的不同结果集将是 TOP、PARENT-A、CHILD-A1、PARENT-C、CHILD-C1
我希望我已经很好地解释了这一点。今天我一直在寻找适合这个的例子。任何意见将不胜感激。
【问题讨论】:
标签: sql-server oracle recursion common-table-expression connect-by