我有两个表,我需要通过查看其他表来填充缺失的值。
日期表
输出:
代码:-我进行了交叉联接,但不确定如何用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])
}));
答案 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