Если тогда еще с переменными и обновить таблицу - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь разработать простую процедуру обновления 2 таблиц из базы данных insur.

Первая таблица tarticulo, в ней есть поле art_existencia, и у меня есть другая таблица с именем Fisico у которого есть поле с именем art_fisico. В поле art_existencia таблицы tarticulo у меня есть целые отрицательные и положительные значения, включая ноль. Во второй таблице Fisico у меня всегда есть положительные значения. Мне нужно разработать подпрограмму для обновления art_existencia со значениями из Fisico, но мне нужно задать несколько вопросов для создания условия.

Например, продукт A имеет tarticulo.art_existencia = 100 и в Fisico , продукт A имеет art_fisico = 200

В этом случае, если art_existencia равен <= 0, значение должно быть <code>art_fisico. но если значение в art_existencia является положительным (пример продукта A art_existencia = 80 и в art_fisico = 20), тогда мне нужно оставить в art_existencia = 20 и получить значение разницы, чтобы просмотреть разницу в модуле Kardex! В случае, если art_fisico больше art_existencia, оставьте значение art_fisico, но мне нужна разница между art_existencia и art_fisico.

1 Ответ

0 голосов
/ 12 января 2020

Следующий пример может быть полезен:

declare @tarticulo table (product varchar(100), art_existencia int)
insert into @tarticulo select 'A', 100
insert into @tarticulo select 'B', 200
insert into @tarticulo select 'C', 300
insert into @tarticulo select 'D', -20
insert into @tarticulo select 'E', 0
insert into @tarticulo select 'F', 10

declare @Fisico table (product varchar(100), art_fisico int)
insert into @Fisico select 'A', 10
insert into @Fisico select 'B', 210
insert into @Fisico select 'F', 100
insert into @Fisico select 'C', 30
insert into @Fisico select 'D', 40

--select * from @tarticulo
--select * from @Fisico

select t.product, t.art_existencia-f.art_fisico 'difference (tarticulo-Fisico)'
from @tarticulo t
join @Fisico f on f.product = t.product

update t set art_existencia = case when t.art_existencia < 0 then f.art_fisico when f.art_fisico > t.art_existencia then t.art_existencia else f.art_fisico end
from @tarticulo t
join @Fisico f on f.product = t.product

select product, art_existencia as art_existencia_updated from @tarticulo

db <> fiddle demo

...