У меня есть временная таблица, # TEMP1, которая возвращает следующую дату лечения для пациентов и общее количество запланированных обработок в заданную дату ассортимент. В пределах временной таблицы значение, которое дает мне минимальное количество дней между каждым лечением.SQL Server - прокрутите временную таблицу и вычислите несколько значений, чтобы вставлять строки во вторую таблицу.
Что мне нужно сделать, это взять следующую дату лечения, определить, сколько запланированных процедур проводится после следующей даты лечения и заполнить вторую временную таблицу, # TEMP2, с запланированными датами.
Например, в # TEMP1, содержит следующие данные:
patient next_tx_dt planned_tx_cnt min_days_bt start_range end_range
PATIENT_1 2/15/2015 4 28 2/1/2015 6/1/2015
PATIENT_2 2/05/2015 9 12 2/1/2015 6/1/2015
PATIENT_3 5/17/2015 1 112 2/1/2015 6/1/2015
Я хотел бы цикл через # TEMP1 и для каждой строки, вычислить даты планируемого лечения. Таким образом, одна строка может быть зациклирована один раз (PATIENT_3) или девять раз (PATIENT_2), и каждый цикл приводит к новой строке в # TEMP2.
PATIENT_1 будет иметь следующие результаты в # ТЕМР2 после успешного цикла:
pat_id planned_tx_dt planned_tx_cnt
PATIENT_1 2/15/2015 1
PATIENT_1 3/15/2015 2
PATIENT_1 4/12/2015 3
PATIENT_1 5/10/2015 4
PATIENT_2 будет иметь 9 строк и PATIENT_3 будет иметь только 1 строку в # ТЕМР2.
Возможно ли это сделать в SQL Server 2008? Я делал очень простые циклы, прежде чем использовать число строк, но это технически не происходит через таблицу, поэтому я не уверен, как это начать или если это возможно (у меня нет большого опыта написания передовых SQL-код).
в вашем наборе данных # TEMP2, как вы рассчитываете 'запланированный_tx_dt' из данных в # TEMP1? – SoulTrain
В моем примере я просто вручную подсчитал дату, но я думаю, что для запроса было бы связано с установкой # TEMP1.planned_tx_cnt вверх как переменной, а затем какой-то цикл для вычисления каждой строки? Например, SET @TX_CNT = # TEMP1.planned_tx_cnt. – katstart
ВЫБОР @I = 1 ВЫБОР @TX_CNT = # TEMP1.planned_tx_cnt While (@I <= @TX_CNT) НАЧАТЬ DATEADD (д, (# TEMP1.min_days_bt * @I), # TEMP1.next_tx_dt) ВЫБОР @ I = @I + 1 END – katstart