SQL 查询以下场景

SQL query for below scenario

我有一个 processDependency table,它有数千条记录。示例记录如下:

Proc DepProc
P1   P2
P2   P3
P3   P4
P4   P5
P6   P7

所以当我 运行 SQL 查询时,我应该能够得出以下结果:

  1. P1-P2-P3-P4-P5

  2. P6-P7

    任何人都可以帮我解决通用问题 SQL。

这不太正确,因为它从 Proc

获取所有路径

但是你没有说清楚先用哪个

无论如何它应该给你一个想法。

SELECT recurse AS
(
   SELECT Proc AS Start, 
          Proc||COALESCE('-'||DepProc,'') AS PATH, 
          DepProc as Next, 1 as Level
   FROM table

   UNION ALL

   SELECT Start,
          PATH||'-'||t.DepProc,
          t.DepProc as Next,
          Level+1 as Level
   FROM recurse r
   JOIN table t ON r.Next = t.Proc
), recurseWithMax AS
(
   SELECT PATH, Start, MAX(Level) OVER (Partition by Start) as Max, Level
)
SELECT Start, PATH
FROM recurseWithMax
WHERE Level = Max