填写缺失的月份

时间:2020-03-03 16:53:07

标签: sql oracle

我有两个表,我需要通过查看其他表来填充缺失的值。

enter image description here

日期表

enter image description here

输出:

enter image description here

代码:-我进行了交叉联接,但不确定如何用0个值填充

for (var i = 0; i < stackBarData.length; i++) {
  var categoryName = stackBarData[i].category;
  if (!groups[categoryName]) {
    groups[categoryName] = [];
  }
  groups[categoryName].push(stackBarData[i].data);
}

stackBarData = [];
for (var categoryName in groups) {
  stackBarData.push({
    label: categoryName,
    data: groups[categoryName]
  });
}

dataSet = stackBarData.map(x => ({
  label: x.label,
  data: x.data.map(y => y[0])
}));

2 个答案:

答案 0 :(得分:2)

我认为您想要类似的东西

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;

答案 1 :(得分:2)

分区外部联接在以下方面很方便:

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