sql >> Databasteknik >  >> RDS >> Oracle

CONNECT BY eller hierarkiska frågor i andra RDBMS än Oracle

SQL Server använder vanliga tabelluttryck (WITH-sats) för att uppnå samma sak (se Rekursiva frågor som använder vanliga tabelluttryck).

Den här typen av fråga kan också användas i Oracle (börjar med 11g om jag inte har fel).

Den resulterande frågan är mer komplex:

WITH emp(employee_id, manager_id, job_id, last_name, lvl)
AS (
    SELECT e.employee_id, e.manager_id, e.job_id, e.last_name, 1 lvl
    FROM employees e
    WHERE job_id = 'AD_VP'
    UNION ALL
    SELECT e.employee_id, e.manager_id, e.job_id, e.last_name, r.lvl + 1 lvl
    FROM employees e
    JOIN emp r ON r.employee_id = e.manager_id
)
SELECT LPAD(' ', 2 * (lvl-1)) || last_name org_chart,
    employee_id, manager_id, job_id
FROM emp;


  1. SSMS kommer nu med Azure Data Studio

  2. Hur ändrar jag en PostgreSQL-tabell och gör en kolumn unik?

  3. SQL Server 2017 Backup -2

  4. Hitta index för senaste förekomsten av en delsträng med T-SQL