首页 > 解决方案 > 去年添加的 BigQuery 自加入,同时考虑了间隔年

问题描述

我正在尝试通过自加入将去年列添加到我的收入表中DATE_ADD(LYI.date, INTERVAL 1 YEAR)

但是,在间隔年(2021 年)之后的第二年 2 月 28 日,这一声明创造了 2 月 28 日的双倍记录。一份用于 28 日,一份用于间隔年的 2 月 29 日。虽然 Last Year 列确实给出了正确的值。我试图通过收入案例陈述来解决这个问题,但这似乎是一个丑陋的解决方案。

有没有人有更清洁的解决方案来解决这个问题?

SELECT DISTINCT 
    INV.date
    ,INV.year
    ,INV.Shipping_Country
    ,CASE 
        WHEN (
            MOD(INV.year-1,4)=0 
            AND EXTRACT(MONTH FROM Date(INV.date)) = 2
            AND EXTRACT(DAY FROM Date(INV.date)) = 28
            ) 
            THEN INV.revenue/2 
        ELSE INV.revenue
        END
        as revenueTEST
    ,INV.revenue
    ,LYI.revenue as revenue_LY
FROM INV
JOIN INV LYI
ON INV.date = DATE_ADD(LYI.date, INTERVAL 1 YEAR) 
    and INV.Shipping_Country = LYI.Shipping_Country
ORDER BY INV.date
日期 航运_国家 收入测试 收入 收入_LY
2020 年 2 月 28 日 2020 荷兰 15 15 12
2020 年 2 月 29 日 2020 荷兰 8 8 无效的
2021 年 2 月 28 日 2021 荷兰 22 44 15
2021 年 2 月 28 日 2021 荷兰 22 44 8

标签: sqlgoogle-bigquery

解决方案


推荐阅读