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 中是唯一的。
我被困在下面的查询中,表格如下。 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 中是唯一的。