我对分层查询有疑问,以下查询在 Oracle 中有效,但在 DB2 中无效
如果我们从芝加哥开始旅程,它将检索可能的目的地。
SELECT origin, departure, arrival
FROM schema001."FLIGHTS"
START WITH departure = 'Chicago'
CONNECT BY PRIOR arrival = departure;
任何人都可以帮助我,我们如何在 DB2 中编写查询
在此先感谢拉杰什
您可以使用递归公用表表达式。
像这样的东西:
with ftree (origin, departure, arrival) as (
select origin,
departure,
arrival
from flights
where departure = 'Chicago'
union all
select c.origin,
c.departure,
c.arrival
from flights c
join ftree p on c.arrival = p.departure
)
select *
from ftree;
(未测试,目前手头没有 DB2)
干杯....我得到了解决方案,工作解决方案是....
WITH rajesh(departure, arrival) AS
(
select departure, arrival from ALERTS_TEST.flights where departure = 'Chicago'
UNION ALL
select nplus1.departure, nplus1.arrival from ALERTS_TEST.flights as nplus1, rajesh
WHERE rajesh.arrival = nplus1.departure
)
SELECT departure, arrival FROM rajesh;
我已经在 db2 v9.7 和 sqlserver 2005 中检查了上述查询。它工作正常...感谢您的帮助 a_horse_with_no_name
您没有提到 DB2 在哪个操作系统上运行。
在 IBM i OS 7.1 上运行的 DB2 for i确实具有分层查询,但语法略有不同。
SELECT origin, departure, arrival
FROM schema001.FLIGHTS
START WITH departure = 'Chicago'
CONNECT BY arrival = PRIOR departure;
不幸的是,我不相信这将适用于 DB2 for LUW 或 z/OS。也许在未来的版本中。