Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешен ред във функция с стойности на таблица (запазване на реда на рекурсивен CTE)

Правилният начин да направите вашето ORDERing е да добавите клауза ORDER BY към вашия най-външен избор. Всичко останало разчита на подробности за изпълнението, които могат да се променят по всяко време (включително ако размерът на вашата база данни/таблици се увеличи, което може да позволи извършването на повече паралелна обработка).

Ако имате нужда от нещо удобно, което да позволи извършването на поръчката, погледнете Пример D в примерите от MSDN страница на 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 
)

Добавете нещо подобно към колоната EmployeeLevel към вашия CTE и всичко трябва да работи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 начина за изброяване на всички съхранени процедури в база данни на SQL Server

  2. java.lang.ClassNotFoundException:com.microsoft.jdbc.sqlserver.SQLServerDriver:Зареждам ли правилния драйвер?

  3. Изявление за случай на T-SQL в клауза JOIN ON

  4. Експортирайте таблица в SQL Server 2008

  5. SQL Server - Закръглете стойностите на TIME до следващата минута