Monday, September 28, 2026

方案 B:SQL 数据库(最适合大数据量)

 方案 B:SQL 数据库(最适合大数据量)

使用 FULL OUTER JOIN(全外连接) 并配合 COALESCE 函数处理缺失值,是解决此类问题最标准的高级写法。 [1, 2]
sql
SELECT 
    COALESCE(t1.year, t2.year) AS Year,
    COALESCE(t1.month, t2.month) AS Month,
    COALESCE(t1.sales, 0) AS Table1_Sales,
    COALESCE(t2.sales, 0) AS Table2_Sales,
    (COALESCE(t1.sales, 0) - COALESCE(t2.sales, 0)) AS Sales_Difference,
    CASE 
        WHEN t1.sales IS NOT NULL AND t2.sales IS NOT NULL THEN 'Common (双方皆有)'
        WHEN t1.sales IS NOT NULL AND t2.sales IS NULL THEN 'Only in Table 1 (表1独有)'
        ELSE 'Only in Table 2 (表2独有)'
    END AS Data_Status
FROM table1 t1
FULL OUTER JOIN table2 t2 
  ON t1.year = t2.year AND t1.month = t2.month; -- 必须双条件关联

No comments:

Post a Comment