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

Zapytanie rekurencyjne w SQL Server

Spróbuj tego:

;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

Możesz użyć OPTION(MAXRECURSION n) aby kontrolować głębokość rekurencji.

DEMO SKRZYPÓW SQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klauzula SQL WHERE dopasowująca wartości z końcowymi spacjami

  2. Jaka jest najlepsza praktyka wstawiania rekordu, jeśli jeszcze nie istnieje?

  3. Jak ustawienia języka mogą wpływać na wyniki FORMAT() w programie SQL Server (przykłady T-SQL)

  4. Eksplorowanie operacji indeksowania online na poziomie partycji w programie SQL Server 2014 CTP1

  5. Jak wyświetlić pełną zawartość kolumny tekstowej lub varchar(MAX) w programie SQL Server 2008 Management Studio?