sql >> Databáze >  >> RDS >> Sqlserver

dynamicky vybrat horní N pomocí N ze stejného příkazu select

Můžete použít row_number() dělat v podstatě to samé:

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

Možná byste to mohli trochu zjednodušit, ale nevím, jestli flag pochází z du nebo ss.



  1. Salesforce SOQL z prostředí Windows PowerShell

  2. 3 způsoby, jak získat jazyk aktuální relace na serveru SQL (T-SQL)

  3. Co znamená exec sp_reset_connection v SQL Server Profiler?

  4. Jak spočítat sloupce dotazu MySQL, když je počet vrácených sloupců dynamický?