Esiste una clausola equivalente a CONNECT BY di Oracle in SQL Server. Il requisito per costruire un albero di categorie usando un campo parentId.ORACLE Collega per clausola equivalente in SQL Server
5
A
risposta
8
L'equivalente SQL Server 2005+ della sintassi di query gerarchica Oracle CONNECT BY
consiste nell'utilizzare un CTE ricorsivo. SQL Server 2008 ha aggiunto HierarchyID. Ecco un esempio di una CTE ricorsiva:
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
Googling "gerarchica CTE" e/o "CTE ricorsiva" storceranno numerosi risultati. Ho preso la query di esempio dal 4GuysFromRolla.com.
Le CTE recursive sono ora standard ANSI: la sintassi non è stata supportata fino a Oracle 11g, come ho capito.
1
C'è il tipo di dati HierarchyID in MS SQL Server 2008, che può semplificarti la vita.
+0
+1 per l'early bird :) – zapping
Problemi correlati
- 1. Query equivalente in sql server per INFORMATION_SCHEMA
- 2. Hashset equivalente in SQL Server
- 3. TrimEnd equivalente in SQL Server
- 4. SQL Server OFFSET equivalente
- 5. Clausola WHERE condizionale in SQL Server
- 6. SQL Server - In clausola con una variabile
- 7. equivalente a StyleCop per SQL Server?
- 8. sql server GO equivalente in oracle
- 9. SQL Server: RowVersion equivalente in Oracle
- 10. PostgreSQL equivalente per SQL Server GROUP BY WITH ROLLUP
- 11. Qual è la sintassi Equivalente di mysql clausola "LIMIT" in SQL Server
- 12. Sql server DELETE e clausola WITH
- 13. SQL Server clausola ORDER BY nella sottoquery
- 14. equivalente di sp_helptext per le tabelle in SQL Server
- 15. Come utilizzare la clausola OUTPUT di SQL Server per l'aggiornamento
- 16. Oracle equivalente a SQL Server incluse le colonne nell'indice
- 17. LISTAGG equivalente con clausola finestratura
- 18. SQL Server: qualsiasi equivalente di strpos()?
- 19. Operatore e commerciale (&) in SQL Server Clausola WHERE
- 20. Ordinamento personalizzato in ordine SQL per clausola?
- 21. Istruzione "CASE" all'interno della clausola "WHERE" in SQL Server 2008
- 22. SQL Server: utilizzo della clausola WITH in un'istruzione INSERT
- 23. Equivalente Sql Server di una funzione aggregata COUNTIF
- 24. Come eseguire una sottoquery Postgresql nella clausola select con join in clausola come SQL Server?
- 25. Identificatore univoco di SQL Server equivalente in C#
- 26. Equivalente decimale SQL in .NET
- 27. SQL where clausola per outer join sinistro
- 28. Equivalente di RowID di Oracle in SQL Server
- 29. equivalente di MySQL su DUPLICATE KEY UPDATE in SQL Server
- 30. SQL Server - utilizzo esiste clausola Dove e selezionare
thx per i collegamenti e il campione. – zapping