Заполните пропущенные месяцы - PullRequest
0 голосов
/ 03 марта 2020

У меня есть две таблицы, и мне нужно заполнить пропущенные значения, посмотрев на другую таблицу.

enter image description here

Таблица данных

enter image description here

Выход:

enter image description here

Код: - Я сделал перекрестное соединение, но не уверен, как заполнить его значениями 0

SELECT a.* 
  FROM PRODUCTS a 
  JOIN "DATE" b
    ON a.YEAR=b.YEAR

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Внешнее соединение разделов удобно для таких вещей:

select product_group, customer, d.year, d.month, nvl(p.revenue, 0) as rev, nvl(p.sales, 0) as sls
  from date_tbl d 
  left join products p partition by (product_group, customer) 
    on p.year = d.year and p.month = d.month

dbfiddle

2 голосов
/ 03 марта 2020

Я думаю, вы хотите что-то вроде:

SELECT pc.*, d.*,
       COALESCE(p.revenue, 0) as revenue,
       . . . 
FROM DATE d CROSS JOIN
     (SELECT DISTINCT product_group, customer FROM PRODUCTS p) pc LEFT JOIN
     PRODUCTS p
     ON p.YEAR = d.YEAR AND p.MONTH = d.MONTH AND
        p.product_group = pc.product_group AND p.customer = pc.customer;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...