Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Urutan yang salah dalam Fungsi bernilai Tabel (menjaga urutan CTE rekursif)

Cara yang benar untuk melakukan ORDERing Anda adalah dengan menambahkan klausa ORDER BY ke pilihan terluar Anda. Hal lain bergantung pada detail implementasi yang dapat berubah setiap saat (termasuk jika ukuran database/tabel Anda naik, yang memungkinkan lebih banyak pemrosesan paralel terjadi).

Jika Anda memerlukan sesuatu yang nyaman untuk memungkinkan pemesanan berlangsung, lihat Contoh D dalam contoh dari Halaman MSDN di 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 
)

Tambahkan sesuatu yang serupa ke kolom EmployeeLevel ke CTE Anda, dan semuanya akan berfungsi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menghasilkan Script Untuk Semua Pemicu di Database Menggunakan Microsoft SQL Server Management Studio

  2. Dokumen tidak memiliki halaman. Laporan Jasper

  3. Kueri SQL untuk membagi data kolom menjadi baris

  4. SQL Stored Procedure mencegah penulisan null

  5. Nama objek tidak valid setelah memulihkan database SQL Server 2008