Уважаемые знатоки, здравствуйте!
Есть задачка:
На вход подается число. Это число сравнивается с диапазоном значений из таблицы 2, и если оно НЕ находится в данной таблице, проверяется условие, четность недели, и в зависимости от того, четная неделя или нечетная, в таблицу 2 вставляется диапазон времени.
Собственно, мой скрипт:
Собственно, вопрос в чем, как заставить выполняться insert только в одном месте, куда попадает число? почему он делает сразу оба инсерта?
Вероятно, понимаю, что дело именно в GO, нооо, как поступить правильно, пока не пойму.
Спасибо!
Есть задачка:
На вход подается число. Это число сравнивается с диапазоном значений из таблицы 2, и если оно НЕ находится в данной таблице, проверяется условие, четность недели, и в зависимости от того, четная неделя или нечетная, в таблицу 2 вставляется диапазон времени.
Собственно, мой скрипт:
SELECT CASE WHEN CURRENT_TIMESTAMP NOT Between (SELECT MAX(start) From table2) and (SELECT MAX(finish) From table2) THEN CASE WHEN (DATEPART(WEEK, CURRENT_TIMESTAMP)%2)=1 THEN GO INSERT INTO table2 (start ,finish) VALUES (CAST(DATEADD(Day, 1-Datepart(Weekday, Current_timestamp)+1,CAST(Current_timestamp as Date)) as datetime) ,DATETIMEFROMPARTS(DATEPART(YEAR, CAST(DATEADD(Day, 1-Datepart(Weekday, Current_timestamp)+14,CAST(Current_timestamp as Date)) as datetime)),DATEPART(MONTH, CAST(DATEADD(Day, 1-Datepart(Weekday, Current_timestamp)+14,CAST(Current_timestamp as Date)) as datetime)),DATEPART(day, CAST(DATEADD(Day, 1-Datepart(Weekday, Current_timestamp)+14,CAST(Current_timestamp as Date)) as datetime)),23,59,59,000) GO ELSE GO INSERT INTO table2 (start ,finish) VALUES (CAST(DATEADD(Day, 1-Datepart(Weekday, (Current_timestamp+7))+1,CAST((Current_timestamp+7)-7 as Date)) as datetime) ,DATETIMEFROMPARTS(DATEPART(YEAR, CAST(DATEADD(Day, 1-Datepart(Weekday, (Current_timestamp+7))+7,CAST((Current_timestamp+7) as Date)) as datetime)),DATEPART(MONTH, CAST(DATEADD(Day, 1-Datepart(Weekday, (Current_timestamp+7))+7,CAST((Current_timestamp+7) as Date)) as datetime)),DATEPART(day, CAST(DATEADD(Day, 1-Datepart(Weekday, (Current_timestamp+7))+7,CAST((Current_timestamp+7) as Date)) as datetime)),23,59,59,000) GO END END
Собственно, вопрос в чем, как заставить выполняться insert только в одном месте, куда попадает число? почему он делает сразу оба инсерта?
Вероятно, понимаю, что дело именно в GO, нооо, как поступить правильно, пока не пойму.
Спасибо!
Модератор: Тема перенесена из форума "MySQL". |