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

Откуда:
Сообщений: 1197
Есть 3 таблицы

StorePrices (StoreId, Month, Articul, Price) - Цены магазинов в ценах по артикулам помесячно
SalesByGroups (Group, Month, Price) - Цены по группе артикулов помесячно
Articuls(Group, Articul) - артикулы с привязкой к определенной группе

один артикул входит только в одну группу

задача:
вывести StoreId, Month, Articul, Price по условию

1. если в таблице SalesByGroups есть месяцы для которых нет цен в StorePrices для какого-то партнера. Нужно вставить все артикулы из Articuls для отсутсвующего месяца и партнера джойня SalesByGroups и Articuls по полю Group
2. если в таблице Articuls есть артикулы которых нет в StorePrices, цену надо брать из SalesByGroups джойня по полю Group и вставить для всех месяцев из SalesByGroups

можно как-то без курсора обойтись?
24 янв 15, 10:47    [17163613]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
мимокрокодилдилдил
Guest
relief,

приведите пример исходных данных в виде with as и пример того что надо получить. лень разбираться в буквах поста. суббота же.
24 янв 15, 11:17    [17163656]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
relief
Member

Откуда:
Сообщений: 1197
мимокрокодилдилдил
relief,

приведите пример исходных данных в виде with as и пример того что надо получить. лень разбираться в буквах поста. суббота же.


with StorePrices as 
(
   select 1 as StoreId, '01' as Month, 'A1' as Articul, 100 as Price
   union all
   select 1 as StoreId, '03' as Month, 'A1' as Articul, 100 as Price
)
select * from StorePrices;
with SalesByGroups  as 
(
   select 'Drink' as [Group], '01'  as Month, 500  as Price
   union all
   select 'Drink' as [Group], '02'  as Month, 500  as Price
   union all
   select 'Drink' as [Group], '03'  as Month, 500    as Price 
)
select * from SalesByGroups;
with Articuls as 
(
   select 'Drink'  as [Group], 'A1'  as Articul
   union all
   select 'Drink'  as [Group], 'A2'  as Articul   
)
select * from Articuls

надо получить 
--по A2 нет данных в StorePrices ни за какой месяц
1, 01, A2, 500
1, 02, A2, 500
1, 03, A2, 500
--по A1 нет данных только за месяц '02'
1, 02, A1, 500
24 янв 15, 11:29    [17163682]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Владислав Колосов
Member

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

piece of cake
with StorePrices as 
(
   select 1 as StoreId, '01' as Month, 'A1' as Articul, 100 as Price
   union all
   select 1 as StoreId, '03' as Month, 'A1' as Articul, 100 as Price
)
,
SalesByGroups  as 
(
   select 'Drink' as [Group], '01'  as Month, 500  as Price
   union all
   select 'Drink' as [Group], '02'  as Month, 500  as Price
   union all
   select 'Drink' as [Group], '03'  as Month, 500    as Price 
)
,
Articuls as 
(
   select 'Drink'  as [Group], 'A1'  as Articul
   union all
   select 'Drink'  as [Group], 'A2'  as Articul   
)
select * 
from Articuls a1
inner join SalesByGroups s1 on a1.[Group] = s1.[Group]
where not exists (select * from StorePrices p1 where p1.Articul = a1.Articul and s1.[Month] = p1.[Month])
24 янв 15, 15:12    [17164081]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
relief
Member

Откуда:
Сообщений: 1197
Владислав Колосов
relief,

piece of cake
with StorePrices as 
(
   select 1 as StoreId, '01' as Month, 'A1' as Articul, 100 as Price
   union all
   select 1 as StoreId, '03' as Month, 'A1' as Articul, 100 as Price
)
,
SalesByGroups  as 
(
   select 'Drink' as [Group], '01'  as Month, 500  as Price
   union all
   select 'Drink' as [Group], '02'  as Month, 500  as Price
   union all
   select 'Drink' as [Group], '03'  as Month, 500    as Price 
)
,
Articuls as 
(
   select 'Drink'  as [Group], 'A1'  as Articul
   union all
   select 'Drink'  as [Group], 'A2'  as Articul   
)
select * 
from Articuls a1
inner join SalesByGroups s1 on a1.[Group] = s1.[Group]
where not exists (select * from StorePrices p1 where p1.Articul = a1.Articul and s1.[Month] = p1.[Month])


это я сделал. а как прицепить магазин еще не пойму
24 янв 15, 15:53    [17164172]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить