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

pilih top N secara dinamis dengan N dari pernyataan pilih yang sama

Anda dapat menggunakan row_number() untuk melakukan hal yang pada dasarnya sama:

WITH DataToInsert AS
(
    Select AgentID, Surveys, LOB,(case when day(getdate())<4 then 3 else (day(getdate())) - (Surveys*3) end) SampleSize from Current_Agent_SurveyCount_HSI Where surveys<8 
)
Insert Into Survey_Source_New (LOB, CenterName, CallDate, AgentZid, TN, Ticket, RecordingID, Cycle, [TimeStamp])  
    select LOB, CenterName, CallDate, AgentZid, TN, Ticket, RecordingID, Cycle, [TimeStamp]
    from (Select ss.LOB, CenterName, CallDate, AgentZid, TN, Ticket, RecordingID, Cycle, [TimeStamp],
                 row_number() over (order by newid()) as seqnum
          From Survey_source_Level1 ss inner join
               DataToInsert du on ss.AgentZID=du.agentID
          where flag is null and du.samplesize<7
         ) t
    where seqnum <= du.sample_size

Anda mungkin dapat menyederhanakan ini sedikit, tetapi saya tidak tahu apakah flag berasal dari du atau ss.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Apa artinya 1 ++ 2?

  2. Cara Menangani Kesalahan dalam Transaksi Bersarang SQL Server

  3. File Rusak Microsoft Office 2007 ASP.NET 1.1 dan SQL Server

  4. Skrip Inventaris Koleksi SQL Server -3

  5. Balik Hasil SQL