Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

chọn đầu N động với N từ cùng một câu lệnh chọn

Bạn có thể sử dụng row_number() để làm điều tương tự về cơ bản:

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

Bạn có thể đơn giản hóa vấn đề này một chút, nhưng tôi không biết liệu flag đến từ du hoặc 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. Chuyển đổi .NET Ticks thành SQL Server DateTime

  2. Cách hàm LEFT () hoạt động trong SQL Server (T-SQL)

  3. Làm cách nào để thay đổi kích thước trang của SQL Server?

  4. Làm cách nào để kiểm tra xem cơ sở dữ liệu có tồn tại trong SQL Server hay không?

  5. Thêm cột có giá trị mặc định vào bảng hiện có trong SQL Server