Я пытаюсь объединить 4 таблицы. Я так, как я получу список продуктов, показывающих продажи и претензии, зарегистрированные в каждом месяце. Необходимо учитывать 4 комбинации:
- Продукт был продан в определенном месяце, и у нас есть претензии к нему.
- Продукт не был продан в течение определенного месяца, и у нас есть претензия на это.
- Товар был продан в определенный месяц, и у нас нет претензий к нему.
Продукт не был продан определенный месяц, и у нас нет претензий к нему.
Я начинаю думать, что создание таблицы дат может быть необходимым.
select
ps.date,
cl.date,
ps.part_number,
ps.sales_quantity,
cl.claims_quantity
from (select convert(varchar(7), s.date, 120) as date, p.part_number, sum(id.quantity) as sales_quantity
from parts as p
left outer join invoice_details as id
on p.part_number = id.part_number
left outer join sales as s
on id.invoice = s.invoice
group by convert(varchar(7), s.date, 120), p.part_number
) ps join
(select convert(varchar(7), c.date_registered, 120) as date, p.part_number, sum(c.quantity) as claims_quantity
from parts as p
left outer join claims as c
on p.part_number = c.part_number
group by convert(varchar(7), c.date_registered, 120), p.part_number
) cl
on ps.part_number = cl.part_number
group by ps.date, cl.date, ps.part_number, ps.sales_quantity, cl.claims_quantity
order by cl.claims_quantity desc
