sql >> Database teknologi >  >> RDS >> Sqlserver

vælg top N dynamisk med N fra den samme select-sætning

Du kan bruge row_number() at gøre stort set det samme:

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

Du kan muligvis forenkle dette lidt, men jeg ved ikke om flag kommer fra du eller ss.



  1. Skal jeg slå Query Cache fra i MySQL?

  2. kolonnedato kan ikke automatisk castes til tidsstempel med tidszone django/postgres

  3. Flere stigende rækkefølge virker ikke i Mysql

  4. Sådan opdeles en tabel ved hjælp af et LIKE-kriterie i Mysql