select
upload_time,
game_name,
TDVX,
YDVX,
TDBD,
YDBD,
CASE WHEN (TDVX-YDVX)/TDVX IS NULL THEN 0 else CONCAT(CONVERT(round((TDVX-YDVX)/TDVX*100, 2), CHAR), "%") end "VX%",
CASE WHEN (TDBD-YDBD)/TDBD IS NULL THEN 0 else CONCAT(CONVERT(round((TDBD-YDBD)/TDBD*100, 2), CHAR), "%") end "BD%"
from (
select
T1.upload_time as upload_time,
T1.game_name as game_name,
CASE WHEN T1.VXINDEX IS NULL THEN 0 ELSE T1.VXINDEX end "TDVX",
CASE WHEN T2.VXINDEX IS NULL THEN 0 ELSE T2.VXINDEX end "YDVX",
CASE WHEN T1.BDINDEX IS NULL THEN 0 ELSE T1.BDINDEX end "TDBD",
CASE WHEN T2.BDINDEX IS NULL THEN 0 ELSE T2.BDINDEX end "YDBD"
from(
select
upload_time,
VXINDEX,
BDINDEX,
game_name
from {0} where upload_time >= '{1}' and date_format(upload_time, '%Y-%m-%d') <= '{2}'
) T1
left join (
select
upload_time,
VXINDEX,
BDINDEX,
game_name
from {0}
where upload_time >= DATE_SUB(date_format('{1}', '%Y-%m-%d'),INTERVAL 1 DAY) and upload_time <= DATE_SUB(date_format('{2}', '%Y-%m-%d'),INTERVAL 1 DAY)
) T2
on T1.upload_time = DATE_add(date_format(T2.upload_time, '%Y-%m-%d'),INTERVAL 1 DAY) and T1.game_name=T2.game_name
) A;