sql >> Database >  >> RDS >> Sqlserver

Verkeerde volgorde in tabel gewaardeerde functie (volgorde van een recursieve CTE behouden)

De juiste manier om uw ORDERing uit te voeren, is door een ORDER BY-clausule toe te voegen aan uw buitenste selectie. Al het andere is afhankelijk van implementatiedetails die op elk moment kunnen veranderen (ook als de grootte van uw database/tabellen groter wordt, waardoor meer parallelle verwerking mogelijk is).

Als je iets handigs nodig hebt om de bestelling te laten plaatsvinden, kijk dan naar Voorbeeld D in de voorbeelden uit de MSDN-pagina op WITH :

WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS 
(
    SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel
    FROM dbo.MyEmployees 
    WHERE ManagerID IS NULL
    UNION ALL
    SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1
    FROM dbo.MyEmployees AS e
        INNER JOIN DirectReports AS d
        ON e.ManagerID = d.EmployeeID 
)

Voeg iets vergelijkbaars toe aan de kolom Werknemersniveau van uw CTE en alles zou moeten werken.



  1. 7 manieren om uw Oracle-versie te controleren

  2. Joda Time - Hibernate voegt de datum van gisteren in de database in

  3. Top back-uptools voor PostgreSQL

  4. Een nieuwe waarde toevoegen aan een bestaand ENUM-type