属性 值 月 状态 相差
L1000 NULL 1 DOWN 0.00399801587301587
L1000 NULL 1 ENGR NULL
L1000 NULL 1 IDLE NULL
L1000 NULL 1 PM NULL
L1000 NULL 1 PROD (Charge) -9.39055654761903L1000 NULL 7 DOWN 0.00399801587301587
L1000 NULL 7 ENGR NULL
L1000 NULL 7 IDLE 5.98
L1000 NULL 7 PM NULL
L1000 NULL 7 PROD (Charge) -9.39055654761903
同样的属性,值,月,状态,唯独相差不同,我想把 7月份的 【相差】,赋值给1月份,如何处理,我用了left join处理
select a.属性,a.值,a.月,a.状态,b.相差
(select 属性,值,月,状态,相差 from 表)a
left join
(select 属性,值,月,状态,相差 from 表)b
on a.属性=b.属性 and a.值=b.值 and a.月=b.月 and a.状态=b.状态
由于数据量多,会出现少数数据,没有对应到相应的位置
select a.属性,a.值,a.月,a.状态,(case when a.月=1 when b.相差 else a.相差 end)相差
from 表 a inner join 表 b on a.状态=b.状态
update a set 相差=b.相差
from 表 a inner join 表 b on a.状态=b.状态
where a.月=1 and b.月=7
left join
(select 属性,值,月,状态,相差 from 表 where 月=7)b
a
set
相差=b.相差
from
a inner join b on a.状态=b.状态
where
a.月=1 and b.月=7