Gibt es eine entsprechende Klausel zu CONNECT BY von Oracle in SQL Server. Die Anforderung zum Erstellen eines Kategoriebaums mithilfe eines parentId-Felds.ORACLE Connect durch Klausel entspricht in SQL Server
Antwort
Der SQL Server 2005+ -Äquivalent der hierarchischen Abfragesyntax CONNECT BY
von Oracle besteht darin, einen rekursiven CTE zu verwenden. SQL Server 2008 hinzugefügt HierarchyID. Hier ist ein Beispiel eines rekursiven 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
„hierarchischen CTE“ und/oder „rekursiven CTE“ googeln werden zahlreiche Ergebnisse auftauchen. Ich nahm die Beispielabfrage von 4GuysFromRolla.com.
Rekursive CTEs sind jetzt ANSI-Standard - die Syntax wurde nicht unterstützt, bis Oracle 11g, wie ich es verstehe.
Es gibt HierarchyID Datentyp in MS SQL Server 2008, die Ihr Leben leichter machen können.
+1 für den frühen Vogel :) – zapping
- 1. SQL Server entspricht Oracle CONNECT BY und LEVEL Pseudo
- 2. Hashset entspricht in SQL Server
- 3. SQL Server MOD entspricht
- 4. SQL Server OUTPUT-Klausel
- 5. SQL-Server: Dynamisches where-Klausel
- 6. SQL Server mit Klausel Ausgabe
- 7. "IN" Klausel Begrenzung in Sql Server
- 8. StyleCop entspricht für SQL Server?
- 9. SQL Server Datetime WHERE Klausel
- 10. Was entspricht SQL Server APPLY in Oracle?
- 11. Sql Server Abfrage entspricht in LINQ
- 12. Excel COUNTIFS entspricht in SQL Server
- 13. sql server GO entspricht in oracle
- 14. OUTPUT-Klausel in SQL SERVER-Fehler
- 15. Bedingung in Where-Klausel - SQL Server
- 16. Switch Fall in Where-Klausel (SQL-Server)
- 17. Bedingte WHERE-Klausel in SQL Server
- 18. WHERE-Klausel in SQL Server "Text" Datentyp
- 19. SQL-Server Datetime in WHERE-Klausel Ausgabe
- 20. CASE-Anweisung in WHERE-Klausel in SQL (SQL Server)
- 21. Connect Codeigniter 3 mit MS SQL Server
- 22. SQL-Syntaxfehler in Where-Klausel
- 23. SQL Server entspricht Oracle NULLS FIRST?
- 24. Was entspricht PostgreSQL dem SQL Server NVARCHAR?
- 25. Sql Server DELETE und WITH-Klausel
- 26. SQL Server - Muster entspricht einer Zeichenfolge
- 27. SQLite entspricht SQL Server DateAdd Funktion
- 28. Oracle entspricht SQL Server/Sybase DateDiff
- 29. Computed Spalte in der Gruppe durch Klausel
- 30. Oracle CONNECT BY-Klausel nach GROUP BY-Klausel
thx für die Links und das Beispiel. – zapping