Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Insert внутри Case. Помогите решить задачку.

$
0
0
Уважаемые знатоки, здравствуйте!

Есть задачка:
На вход подается число. Это число сравнивается с диапазоном значений из таблицы 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".

Viewing all articles
Browse latest Browse all 7251