Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 IF INSERT после SELECT запроса  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
Добрый день. Есть такой результат запроса
id date dataId downtime
5B22FE0E-36A5-42AE-A280-93E6D47B4044 2019-11-12 13:09:49.943 583D454E-994A-4E00-909B-E73B4FBB6CC8 1
93E8FECB-8782-4357-B0FC-75C147594F50 2019-11-12 16:30:27.530 00836B72-187B-48C2-91FE-F67669175FB8 0
0ADA876A-4C54-4EFB-8D72-62CE5CEE1A3E 2019-11-12 16:30:37.077 734F3CB7-5C01-4FF6-8B9B-3DC0A5077156 0
4E54A711-2C00-41FB-BC23-B27002F03127 2019-11-12 16:30:23.907 518FC09F-3F19-4124-95D7-73A0DF1E7095 0


Как дописать чтобы если в запросе столбца downtime есть 1, то взять данные столбца и сделать insert в другую таблицу
BEGIN TRANSACTION;
SELECT -- параметры запроса
IF [downtime] =1 -- как то так
 BEGIN INSERT INTO
 END
COMMIT;
12 ноя 19, 16:43    [22014624]     Ответить | Цитировать Сообщить модератору
 Re: IF INSERT после SELECT запроса  [new]
londinium
Member

Откуда: Киев
Сообщений: 1169
Hopfen_Artur,
IF EXISTS
(
  SELECT 1 FROM... WHERE DOWNTIME=1
)
INSERT ....

так?
12 ноя 19, 16:45    [22014627]     Ответить | Цитировать Сообщить модератору
 Re: IF INSERT после SELECT запроса  [new]
1C Developer
Member

Откуда:
Сообщений: 65
INSERT INTO ...
SELECT ... FROM WHERE [downtime] =1 


... - Порядок и количество должно в INSERT и SELECT секциях.
12 ноя 19, 16:46    [22014628]     Ответить | Цитировать Сообщить модератору
 Re: IF INSERT после SELECT запроса  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
Проблема в том что downtime создается так
CASE WHEN 
	      DATEADD(SECOND,
	      CASE WHEN 
		      [STD].[CycleNorm] * 3 <= 300 
			  THEN [STD].[CycleNorm] * 3 
			  ELSE 300 END
	   , MAX(RF.Date)) <  GETDATE () 
	   THEN 1 
	   ELSE 0 
	   END AS [downtime]
12 ноя 19, 16:50    [22014632]     Ответить | Цитировать Сообщить модератору
 Re: IF INSERT после SELECT запроса  [new]
Hopfen_Artur
Member

Откуда:
Сообщений: 106
В приницпе понял
SELECT tb1.[downtime] FROM(
SELECT 
) AS tb1
WHERE tb1.[downtime] = 1
12 ноя 19, 16:55    [22014637]     Ответить | Цитировать Сообщить модератору
 Re: IF INSERT после SELECT запроса  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7758
Hopfen_Artur,

почему это проблема?
Напишите having case ... end = 1 после группировки.
12 ноя 19, 16:56    [22014638]     Ответить | Цитировать Сообщить модератору
 Re: IF INSERT после SELECT запроса  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 769
Hopfen_Artur,

Динамическим SQL.

DECLARE @SQLCMD AS NVARCHAR(MAX)
DECLARE @tmp_value AS INT
SELECT @tmp_value = [downtime] FROM TABLE WHERE ...


IF @tmp_value = 1
	BEGIN
		SET @SQLCMD = 'INSERT INTO TABLE1'
	END
ELSE
	BEGIN 
		SET @SQLCMD = 'INSERT INTO TABLE2'
	END

PRINT @SQLCMD
EXEC sp_executesql @SQLCMD
13 ноя 19, 09:02    [22014985]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить