Как сопоставить даты в 2 разных таблицах и объединить в таблицу идентификаторов? - PullRequest
0 голосов
/ 19 января 2019

У меня есть таблица, полная идентификаторов продуктов и их атрибутов.Я хочу объединить данные о продажах и поступлениях из 2 разных таблиц и разных строк для каждой комбинации идентификатора и даты.Поэтому я хочу, чтобы выходные данные выглядели так:

example

Я попытался соединить таблицу идентификаторов продуктов и таблицу продаж с таблицей квитанций, но я не уверен, как получить датыиз таблицы продаж и квитанций, чтобы соответствовать.Не уверен, как подойти к этому.Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Рассчитать количество для каждой таблицы и объединить их, используя UNION ALL

select
   product_id
  ,sales_date
   -- combine the counts from both tables
  ,sum(sales_count)
  ,sum(receipt_count)
from
 (
   -- get the counts for the sales table
   select
      product_id
     ,sales_date
     ,count(*) as sales_count
      -- UNION needs the same number of columns in both Select -> adding a dummy column
      -- 1st Select determines the datatype
     ,cast(0 as int) as receipt_count
   from sales 
   group by product_id, sales_date

   UNION ALL

   -- get the counts for the receipts table
   select
      product_id
     ,receipt_date
     ,0
     ,count(*) 
   from receipts 
   group by product_id, receipt_date
 ) as dt
group by product_id, receipt_date
0 голосов
/ 19 января 2019
select p.product_id, s.sales_date, s.sales_count, r.receipt_count
from
  products p,
  (select count(*) sales_count, sales_date, product_id from sales group by 2,3) s
  (select count(*) receipt_count, receipt_date, product_id from receipts group by 2,3) r
where 
  p.product_id = s.product_id
  and p.product_id = r.product_id
  and s.sales_date=r.receipt_date
;
...