多表关联查询,工作中 用到的sql

143 阅读1分钟
select s1.data_id, s1.DISTRICTBCDID, s1.ADDRESSID, s1.INSERT_TIME, max(s1.DATA_VALUE) as DATA_VALUE, max(s2.EPU_LOCAL) as EPU_LOCAL

 from 
S_SENSOR_DATA s1 left join (

select s.data_id, s.DISTRICTBCDID, s.ADDRESSID, mb.EPU_LOCAL, max(s.INSERT_TIME) as INSERT_TIME
from S_SENSOR_DATA s 
left join T_METERBOX mb on s.DISTRICTBCDID = mb.C_DISTRICTBCDID and s.ADDRESSID = mb.C_ADDRESSID
where (s.data_id = 5 or s.data_id=8) -- and mb.EPU_LOCAL like '2栋%'
group by s.data_id, s.DISTRICTBCDID, s.ADDRESSID, mb.EPU_LOCAL) 
s2 on s1.data_id = s2.data_id and s1.DISTRICTBCDID = s2.DISTRICTBCDID and s1.ADDRESSID = s2.ADDRESSID and s1.INSERT_TIME = s2.INSERT_TIME
where s2.data_id is not null
group by s1.data_id, s1.DISTRICTBCDID, s1.ADDRESSID, s1.INSERT_TIME