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

Откуда:
Сообщений: 146
Подскажите, вот данные
create table chec 
(
shop_code nvarchar(10),
product_id int,
doc_date datetime,
ship_count int,
mark_1 int,
outputer int,
y int

)

insert into chec values 
('00664НСК',11628,'2015-01-03 00:00:00.000',12,1,8,1),
('00664НСК',11628,'2015-01-05 00:00:00.000',7,1,8,1),
('00664НСК',11628,'2015-01-06 00:00:00.000',24,0,8,1),
('00664НСК',11628,'2015-01-07 00:00:00.000',18,1,8,1),
('00664НСК',11628,'2015-01-08 00:00:00.000',12,1,8,1),
('00664НСК',11628,'2015-01-09 00:00:00.000',18,0,8,1),
('00664НСК',11628,'2015-01-10 00:00:00.000',6,0,6,1),
('00664НСК',11628,'2015-01-11 00:00:00.000',6,1,6,1),
('00664НСК',11628,'2015-01-12 00:00:00.000',6,1,6,1),
('00664НСК',11628,'2015-01-13 00:00:00.000',18,1,12,0),
('00664НСК',11628,'2015-01-14 00:00:00.000',6,1,6,0),
('00664НСК',11628,'2015-01-15 00:00:00.000',18,1,12,0),
('00664НСК',11628,'2015-01-16 00:00:00.000',12,1,12,1),
('00664НСК',11628,'2015-01-17 00:00:00.000',18,1,12,1),
('00664НСК',11628,'2015-01-18 00:00:00.000',12,1,12,1),
('00664НСК',11628,'2015-01-19 00:00:00.000',10,1,10,0),
('00664НСК',11628,'2015-01-20 00:00:00.000',24,1,12,0),
('00664НСК',11628,'2015-01-21 00:00:00.000',6,1,6,0),
('00664НСК',11628,'2015-01-24 00:00:00.000',6,1,6,0),
('00664НСК',11628,'2015-01-25 00:00:00.000',6,0,6,0),
('00664НСК',11628,'2015-01-26 00:00:00.000',10,0,10,1),
('00664НСК',11628,'2015-01-27 00:00:00.000',6,1,6,0),
('00664НСК',11628,'2015-01-28 00:00:00.000',10,1,10,0),
('00664НСК',11628,'2015-01-29 00:00:00.000',70,0,12,1),
('00664НСК',11628,'2015-01-30 00:00:00.000',100,1,12,1)



Мне нужно соблюдать такое условие: если y = 1 и mark1 = 1, то outputer по марк1 должен быть заменен первым значением, которое идет для y = 0 и mark1 = 1 в переменной outputer.

если первое значение, которое идет для Y = 0 и mark1 = 1 в outputer, больше, чем ship_count, то надо в outputer оставить фактическое значение ship_count

Нулевую категорию марк1 для outputera, мы не трогаем.

Эта операция должна выполняться по группам ship_code + product_id

Таким образом, желаемый результат


shop_code product_id doc_date ship_count mark_1 outputer y
00664НСК 11628 03.01.2015 12 1 *12 1
00664НСК 11628 05.01.2015 7 1 *7 1
00664НСК 11628 06.01.2015 24 0 24 1
00664НСК 11628 07.01.2015 18 1 *12 1
00664НСК 11628 08.01.2015 12 1 *12 1
00664НСК 11628 09.01.2015 18 0 18 1
00664НСК 11628 10.01.2015 6 0 6 1
00664НСК 11628 11.01.2015 6 1 6 1
00664НСК 11628 12.01.2015 6 1 6 1
00664НСК 11628 13.01.2015 18 1 *12 0
00664НСК 11628 14.01.2015 6 1 6 0
00664НСК 11628 15.01.2015 18 1 12 0
00664НСК 11628 16.01.2015 12 1 *10 1
00664НСК 11628 17.01.2015 18 1 *10 1
00664НСК 11628 18.01.2015 12 1 *10 1
00664НСК 11628 19.01.2015 10 1 10 0
00664НСК 11628 20.01.2015 24 1 12 0
00664НСК 11628 21.01.2015 6 1 6 0
00664НСК 11628 24.01.2015 6 1 6 0
00664НСК 11628 25.01.2015 6 0 6 0
00664НСК 11628 26.01.2015 10 0 10 1
00664НСК 11628 27.01.2015 6 1 6 1
00664НСК 11628 28.01.2015 20 1 *12 0
00664НСК 11628 29.01.2015 70 1 12 0
00664НСК 11628 30.01.2015 100 1 12 1

* это те значения которые были заменены согласно условиям
Как мне это сделать в SQL
3 ноя 18, 15:06    [21723270]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить