복붙노트

[SQL] SQL Server의 조항에 해당하여 ORACLE 연결

SQL

SQL Server의 조항에 해당하여 ORACLE 연결

SQL 서버에서 오라클의 CONNECT BY에 해당하는 조항이있다. 요구 사항은 parentId 필드를 사용하여 카테고리 트리를 빌드합니다.

해결법

  1. ==============================

    1.오라클의 CONNECT BY 계층 적 쿼리 구문의 SQL 서버 2005 + 상응하는 재귀 CTE를 사용합니다. SQL 서버 2008 HIERARCHYID를 추가했다. 여기에 재귀 CTE의 예입니다 :

    오라클의 CONNECT BY 계층 적 쿼리 구문의 SQL 서버 2005 + 상응하는 재귀 CTE를 사용합니다. SQL 서버 2008 HIERARCHYID를 추가했다. 여기에 재귀 CTE의 예입니다 :

    WITH EmployeeHierarchy (EmployeeID, LastName, FirstName, ReportsTo, HierarchyLevel) AS (
       SELECT EmployeeID,
              LastName,
              FirstName,
              ReportsTo,
              1 as HierarchyLevel
         FROM Employees
        WHERE ReportsTo IS NULL
       UNION ALL
       -- Recursive step
       SELECT e.EmployeeID,
              e.LastName,
              e.FirstName,
              e.ReportsTo,
              eh.HierarchyLevel + 1 AS HierarchyLevel
         FROM Employees e
         JOIN EmployeeHierarchy eh ON e.ReportsTo = eh.EmployeeID)
      SELECT *
        FROM EmployeeHierarchy
    ORDER BY HierarchyLevel, LastName, FirstName 
    

    "계층 적 CTE"및 / 또는 "재귀 CTE를"인터넷 검색 많은 결과를집니다. 나는 4GuysFromRolla.com에서 예를 질의했다.

    재귀 CTE는 이제 ANSI 표준입니다 - 내가 이해 구문은 오라클 11g까지 지원되지 않습니다.

  2. ==============================

    2.여러분의 인생을 더 쉽게 만들 수 있습니다 MS SQL Server 2008의 HIERARCHYID 데이터 유형이있다.

    여러분의 인생을 더 쉽게 만들 수 있습니다 MS SQL Server 2008의 HIERARCHYID 데이터 유형이있다.

  3. from https://stackoverflow.com/questions/2200636/oracle-connect-by-clause-equivalent-in-sql-server by cc-by-sa and MIT license