आप उपयोग कर सकते हैं:
WITH cte AS (
SELECT date, s.product
FROM ... -- some way to generate date series
CROSS JOIN (SELECT DISTINCT product FROM sales_data) s
)
SELECT
c.date,
c.product,
COUNT(sd.sale_id) AS sales
FROM cte c
LEFT JOIN sales_data sd
ON c.date = sd.date AND c.product= sd.product
GROUP BY c.date, c.product
ORDER BY c.date, c.product;
पहले तिथियों और उत्पादों का कार्टेशियन उत्पाद बनाएं, फिर LEFT JOIN
वास्तविक डेटा के लिए और गणना करें।
इस परिदृश्य के लिए Oracle के पास नामक बेहतरीन विशेषता है। विभाजित बाहरी जोड़ :
SELECT times.time_id, product, quantity
FROM inventory PARTITION BY (product)
RIGHT OUTER JOIN times ON (times.time_id = inventory.time_id)
WHERE times.time_id BETWEEN TO_DATE('01/04/01', 'DD/MM/YY')
AND TO_DATE('06/04/01', 'DD/MM/YY')
ORDER BY 2,1;