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

Kembalikan dua set hasil saat menggunakan WITH TempResults AS

Ini tidak dapat dilakukan (sejauh yang saya ketahui). Ada tiga solusi, satu yang memungkinkan Anda untuk menyimpannya sebagai dua kumpulan hasil yang berbeda, dan dua lainnya yang memerlukan penggabungan hasil ke dalam kumpulan hasil yang sama (baik sebagai baris tambahan atau kolom tambahan).

  1. Alih-alih CTE, dorong hasilnya ke tabel sementara lalu kueri dari itu.
  2. Gabungkan hitungan ke dalam hasil aktual yang ditetapkan sebagai baris lain:gunakan UNION ALL dan berikan baris hitungan nilai yang sesuai untuk ID, Nama, dan RowID sehingga Anda dapat mengekstraknya dari data lainnya
  3. Tambahkan SELECT COUNT(*) ke dalam hasil utama yang ditetapkan sebagai kolom tambahan dengan CROSS JOIN atau serupa.

Untuk yang terakhir ini, Anda dapat melakukannya dengan mengubah kueri utama Anda menjadi:

SELECT Id, Name, RowId, countTable.totalRows
    FROM ResultsTemp
        CROSS JOIN (SELECT COUNT(*) AS totalRows FROM ResultsTemp) AS countTable
    GROUP BY Id, Name, RowId 
    HAVING RowId BETWEEN @StartRow and (@StartRow + @MaxRows);

Saya tidak dapat menjamin kinerjanya - Anda perlu membuat profil.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Statistik IO File Kinerja SQL Server

  2. Bagaimana cara 'mengurangi' tabel sql?

  3. Menggabungkan LIKE dengan IN dalam SQL

  4. Bagaimana cara mengatur dan mengindeks pada dua kolom variabel tabel yang dideklarasikan T-SQL?

  5. SQL Server Dynamic Pivot di UDF yang mengembalikan tabel