SQL 自连接/子查询

SQL Self Join / Sub Query

我被困在下面的查询中,表格如下。 wktest(商店、dt、销售) Cal (dt, fin_yr, wk)

注意:wktest 是一个销售 table 有去年和今年,我想用下面的键

按周获得去年销售和今年销售的结果

当年周数+工作日=去年周数+工作日

select w.Store,c.Fin_Yr ,c.Wk, sum(w.sale)
        from wktest w
        join cal c on w.dt = c.dt
        where
        concat(c.wk,weekday(w.dt)) = 
        
        (select concat(cal.wk,weekday(wktest.dt)) from cal join wktest on cal.dt = wktest.dt where wktest.dt between '2019-04-01' and '2020-03-31')
        
        group by w.Store,c.Fin_Yr ,c.Wk;

共享示例 tables & 预期输出

测试一下,也许这个查询对你来说是安全的?

SELECT wk, SUM(FY20.sale) FY20_sale, SUM(FY22.sale) FY22_sale
FROM ( SELECT dt, cal.wk, wktest.sale
       FROM wktest
       JOIN cal USING (dt)
       WHERE cal.fin_yr = 'FY20' ) FY20
JOIN ( SELECT dt, cal.wk, wktest.sale
       FROM wktest
       JOIN cal USING (dt)
       WHERE cal.fin_yr = 'FY22' ) FY22 USING (wk)
WHERE WEEKDAY(FY20.dt) = WEEKDAY(FY22.dt)
GROUP BY wk

查询假定 dt 列值在每个单独的 table 中是唯一的。