sql >> Database >  >> RDS >> Sqlserver

selecteer top N dynamisch met N uit dezelfde select-opdracht

U kunt row_number() . gebruiken om in wezen hetzelfde te doen:

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

Je kunt dit misschien een beetje vereenvoudigen, maar ik weet niet of flag komt van du of ss.



  1. Hoe een tabel te vergrendelen om in sql in te voegen?

  2. Sequelize hoe de associatietabel te gebruiken?

  3. Ongeldige lengteparameter doorgegeven aan de LEFT- of SUBSTRING-functie

  4. Waarom is '2'> '10'?