我看过很多帖子,这些帖子涉及如何将 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
我希望我已经很好地解释了这一点。今天我一直在寻找适合这个的例子。任何投入将不胜感激。