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

Откуда:
Сообщений: 1197
Привет

есть таблица Продажи с такими столбцами

Артикул, ДатаПродажи, Магазин (Магазина всего 2)


Надо вывести таблицу вида

Артикул, Магазин1, ДатаПродажиМагазина1, НомерПродажиДанногоАртикулаМагазина1, Магазин2, ДатаПродажиМагазина2, НомерПродажиДанногоАртикулаМагазина2

Т.е. если Магазин1 продал 2 одинаковых артикула, а Магазин 2 продал только 1 такой же артикул, то в таблице должно быть 2 строки: для магазина1 обе заполнены, а для магазина2 только продажа с номером 1 заполенна.

Плиз хелп
31 авг 14, 16:13    [16517478]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
aleks2
Guest
with
  first as ( select *, ROW_NUMBER() over(PARTITION by Артикул order by ДатаПродажи ) as n from [есть таблица] where Магазин = 1 )
, second as ( select *, ROW_NUMBER() over(PARTITION by Артикул order by ДатаПродажи ) as n from [есть таблица] where Магазин = 2 )

select coalesce(f.Артикул, s.Артикул ) as Артикул
     , 1 as Магазин1
     , f.ДатаПродажи as ДатаПродажиМагазина1
     , coalesce(f.n, s.n ) as НомерПродажиДанногоАртикулаМагазина1
     , 2 as Магазин2
     , s.ДатаПродажи as ДатаПродажиМагазина2
     , coalesce(f.n, s.n ) as НомерПродажиДанногоАртикулаМагазина2
  from first f full outer join second s on f.Артикул = s.Артикул and  f.n = s.n;
31 авг 14, 16:50    [16517524]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
relief
Member

Откуда:
Сообщений: 1197
aleks2

Спасибо!!
31 авг 14, 18:46    [16517692]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить