Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

T-SQL uzyskuje węzeł główny w hierarchii

Co powiesz na przeniesienie LEFT JOIN z CTE?

WITH root_nodes
AS (
    -- Grab all the leaf nodes I care about
    SELECT NULL as child_node, n.node as parent_node
    FROM #nodes n
    WHERE n.node IN (1, 2)

    UNION ALL

    -- Grab all the parent nodes
    SELECT rn.parent_node as child_node, a.parent_node
    FROM root_nodes rn
        JOIN #arcs a
      ON rn.parent_node = a.child_node
)
SELECT DISTINCT rn.parent_node AS root_node
FROM root_nodes rn
    LEFT JOIN #arcs a
  ON rn.parent_node = a.child_node
WHERE a.parent_node IS NULL

Zestaw wyników to 1, 4, 7.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Optymalizacja dynamicznego SQL i procedur składowanych

  2. DATEDIFF_BIG() Przykłady w SQL Server

  3. Łączenie wartości kolumn w listę rozdzielaną przecinkami

  4. Wartościowy parametr tabeli:wysyłanie danych w małych porcjach

  5. PARSE() vs CAST() vs CONVERT() w SQL Server:jaka jest różnica?