sql >> データベース >  >> RDS >> Sqlserver

同じ select ステートメントの N を使用して上位 N を動的に選択する

    row_number() を使用できます 基本的に同じことをする:

    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
    

    これを少し単純化できるかもしれませんが、 flag かどうかはわかりません du または ss から来ています。



    1. 1つのクエリで2つのテーブルを更新するにはどうすればよいですか?

    2. PostgreSQLデータベースを作成する方法

    3. どのMySQL照合がPHPの文字列比較と完全に一致しますか?

    4. 組み込みMySQLサーバーC#ラッパー?