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

Откуда:
Сообщений: 265
Подскажите как правильно написать?

      update dbo._EstimateBodies
      SET Point = @Point, SectionID = @Section, CASE WHEN [STATUS] > 0 THEN CountTimeV = @CountTimeV ELSE OneTime = 0 END, CASE WHEN [STATUS] > 0 THEN OneTime = @OneTime ELSE OneTime = 0 END,
			 Author = @Author, Status = @Status, Received = GETDATE(), AgencyRate = @AgencyRate, TaxRateKl = @TaxRateKl
      where EstimateID = @Master and Point = @Point AND FIO = @FIO and Status > 0
31 окт 17, 10:54    [20914581]     Ответить | Цитировать Сообщить модератору
 Re: Изменение записи в таблице используя условие CASE  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Сейчас ошибка : Incorrect syntax near the keyword 'CASE'.
31 окт 17, 11:03    [20914614]     Ответить | Цитировать Сообщить модератору
 Re: Изменение записи в таблице используя условие CASE  [new]
stdvb
Member

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

CountTimeV = CASE WHEN [STATUS] > 0 THEN @CountTimeV ELSE CountTimeV END,
OneTime = CASE WHEN [STATUS] > 0 THEN @OneTime ELSE 0 END,
31 окт 17, 11:08    [20914648]     Ответить | Цитировать Сообщить модератору
 Re: Изменение записи в таблице используя условие CASE  [new]
Focha
Member

Откуда: Москва
Сообщений: 496
update dbo._EstimateBodies
SET      Point		= @Point
	,SectionID	= @Section
	,CountTimeV     = CASE WHEN [STATUS] > 0 THEN @CountTimeV	  END
	,OneTime	= CASE WHEN [STATUS] > 0 THEN @OneTime ELSE  0    END
	,Author		= @Author
	,Status		= @Status
	,Received	= GETDATE()
	,AgencyRate     = @AgencyRate
	,TaxRateKl	= @TaxRateKl

where EstimateID = @Master 
and Point = @Point 
AND FIO = @FIO 
and Status > 0
1 ноя 17, 12:00    [20918456]     Ответить | Цитировать Сообщить модератору
 Re: Изменение записи в таблице используя условие CASE  [new]
stdvb
Member

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

Вот это
CountTimeV = CASE WHEN [STATUS] > 0 THEN @CountTimeV END

то же самое, что
CountTimeV = CASE WHEN [STATUS] > 0 THEN @CountTimeV ELSE NULL END

автору это явно не нужно.
2 ноя 17, 08:27    [20920836]     Ответить | Цитировать Сообщить модератору
 Re: Изменение записи в таблице используя условие CASE  [new]
Focha
Member

Откуда: Москва
Сообщений: 496
stdvb
Focha,

Вот это
CountTimeV = CASE WHEN [STATUS] > 0 THEN @CountTimeV END

то же самое, что
CountTimeV = CASE WHEN [STATUS] > 0 THEN @CountTimeV ELSE NULL END

автору это явно не нужно.


я исправил весь запрос, что бы мог скопировать и попробовать.
2 ноя 17, 18:19    [20922751]     Ответить | Цитировать Сообщить модератору
 Re: Изменение записи в таблице используя условие CASE  [new]
stdvb
Member

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

Думаю, автор уже давно все сделал. А у вас в запросе логическая ошибка, на которую я и указал.
3 ноя 17, 10:02    [20923872]     Ответить | Цитировать Сообщить модератору
 Re: Изменение записи в таблице используя условие CASE  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Кузнец не нужен
...
,CountTimeV = CASE WHEN [STATUS] > 0 THEN @CountTimeV END
,OneTime = CASE WHEN [STATUS] > 0 THEN @OneTime ELSE 0 END
where ...
and Status > 0
3 ноя 17, 15:52    [20925325]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить