sql >> Databáze >  >> RDS >> Sqlserver

Nesprávné pořadí ve funkci s hodnotou tabulky (zachovat pořadí rekurzivního CTE)

Správný způsob, jak provést ORDERing, je přidat klauzuli ORDER BY k vašemu nejvzdálenějšímu výběru. Cokoli jiného závisí na podrobnostech implementace, které se mohou kdykoli změnit (včetně případů, kdy se zvětší velikost vaší databáze/tabulek, což může umožnit paralelnější zpracování).

Pokud potřebujete něco pohodlného, ​​aby se objednávka mohla uskutečnit, podívejte se na příklad D v příkladech z Stránka MSDN na 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 
)

Přidejte něco podobného do sloupce EmployeeLevel do vašeho CTE a vše by mělo fungovat.



  1. Jak zjistit, kdy byl dotaz úspěšně proveden v PHP PDO?

  2. Protože neexistuje žádný parametr pole Sqlserver, jaký je nejlepší způsob, jak postupovat?

  3. Formátování dat na určitou barvu

  4. Kontrolní seznam shody SOx pro PostgreSQL