1. 程式人生 > >MySql case when then 同表多連線 時間判斷 sql語句

MySql case when then 同表多連線 時間判斷 sql語句

SELECT 
info.uuid AS carUuid,
info.vehicle_plate_number AS carNumber,
obd.device_id AS obdDeviceId,
//null替換為0
COALESCE(obd.speed,0) AS obdSpeed,
obd.update_time AS obdTime,
obd.position AS obdAddress,
obd.bd_lng AS obdLng,
obd.bd_lat AS obdLat,
zgps.device_id AS zgpsDeviceId,
COALESCE(zgps.speed,0) AS zgpsSpeed,
zgps.update_time AS zgpsTime,
zgps.position AS zgpsAddress,
zgps.bd_lng AS zgpsLng,
zgps.bd_lat AS zgpsLat,
bgps.device_id AS bgpsDeviceId,
COALESCE(bgps.speed,0) AS bgpsSpeed,
bgps.update_time AS bgpsTime,
bgps.position AS bgpsAddress,
bgps.bd_lng AS bgpsLng,
bgps.bd_lat AS bgpsLat,
//條件判斷 
CASE WHEN obd.car_status = '0' THEN '離線'
		 WHEN obd.car_status = '1' AND obd.speed > 120 THEN '超速'
		 WHEN obd.car_status = '1' AND obd.speed = 0 THEN '靜止'
		 ELSE '運動'
		 END obdStatus,
CASE WHEN zgps.car_status = '0' THEN '離線'
     WHEN zgps.car_status = '1' AND zgps.speed > 120 THEN '超速'
		 WHEN zgps.car_status = '1' AND zgps.speed = 0 THEN '靜止'
		 ELSE '運動'
		 END zgpsStatus,
CASE WHEN bgps.car_status = '0' THEN '離線'
		 WHEN bgps.car_status = '1' AND bgps.speed > 120 THEN '超速'
		 WHEN bgps.car_status = '1' AND bgps.speed = 0 THEN '靜止'
		 ELSE '運動'
		 END bgpsStatus
FROM `longrent-rent`.tb_vehicle_info info LEFT JOIN `longrent-risk`.tb_obd_device obd ON info.uuid = obd.car_uuid
//同一張表不同條件
LEFT JOIN `longrent-risk`.tb_gps_device zgps ON info.uuid = zgps.car_uuid AND zgps.gps_type = 1
LEFT JOIN `longrent-risk`.tb_gps_device bgps ON info.uuid = bgps.car_uuid AND bgps.gps_type =0
WHERE 
info.vehicle_status = 0 
and info.del = 0 
//curdate()獲取當前年月日 
AND DATE_FORMAT(obd.update_time, '%Y-%m-%d') = CURDATE()
AND obd.data_status = 1;