Запрос, составляющий транзитивное замыкание ациклического ориентированного графа
WITH TC
AS
(
BEGIN CALLOUT A
  SELECT src_pid, tgt_pid FROM Links
END CALLOUT A

  UNION ALL

BEGIN CALLOUT B
  SELECT P.src_pid, C.tgt_pid
  FROM Links AS C
    JOIN TC AS P
      ON C.src_pid = P.tgt_pid
END CALLOUT B
)
SELECT DISTINCT * FROM TC
ORDER BY src_pid, tgt_pid;

Поделитесь материалом с коллегами и друзьями