sql >> Databasteknik >  >> RDS >> Sqlserver

Rekursiv fråga i SQL Server

Prova detta:

;WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID Group_ID,
        M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
    UNION ALL
    SELECT
        C.Group_ID,
        M.matching_Product_Id
    FROM CTE C
        JOIN matches M
            ON C.Product_ID = M.Product_ID
)
SELECT * FROM CTE ORDER BY Group_ID

Du kan använda OPTION(MAXRECURSION n) för att kontrollera rekursionsdjupet.

SQL FIDDLE DEMO



  1. 3 sätt att säkerhetskopiera en SQLite-databas

  2. Hur tillåter jag att en rullgardinsparameter i SSRS har ett standardvärde på -- Alla -- ?

  3. ORA-1114 Kör Datapatch

  4. När behöver jag använda start-/slutblock och nyckelordet Go i SQL Server?