Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nieprawidłowa kolejność w funkcji o wartościach w tabeli (zachowaj kolejność rekurencyjnego CTE)

Prawidłowym sposobem wykonania zamówienia jest dodanie klauzuli ORDER BY do najbardziej zewnętrznego zaznaczenia. Wszystko inne polega na szczegółach implementacji, które mogą ulec zmianie w dowolnym momencie (w tym, jeśli rozmiar bazy danych/tabeli wzrośnie, co może pozwolić na więcej przetwarzania równoległego).

Jeśli potrzebujesz czegoś wygodnego, aby umożliwić składanie zamówień, spójrz na przykład D w przykładach z Strona MSDN na Z :

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 
)

Dodaj coś podobnego do kolumny EmployeeLevel do swojego CTE, a wszystko powinno działać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można usunąć z wielu tabel w tej samej instrukcji SQL?

  2. Łączenie aplikacji platformy UWP z dostawcą zdalnego SQL Server 2008:dostawca TCP, błąd:0

  3. LINQ to SQL:zbyt duże użycie procesora:co się dzieje, gdy jest wielu użytkowników

  4. TSQL - Czy można zdefiniować porządek sortowania?

  5. Jak filtrować wiersze z wartościami null w instrukcji Select w SQL Server — samouczek SQL Server / TSQL, część 110