CASE WHEN #{timeSub} != 13 THEN MAX(meter_value) - MIN(meter_value) ELSE MAX(expend) END expend
FROM
(
SELECT
rpd.meter_value,
rpd.monitor_id,
FORMAT ( rpd.record_time, 'yyyy-MM' ) AS month_tag,
ROW_NUMBER ( ) OVER ( PARTITION BY FORMAT ( rpd.record_time, 'yyyy-MM' ), rpd.monitor_id ORDER BY rpd.record_time ASC ) AS rn_asc,
ROW_NUMBER ( ) OVER ( PARTITION BY FORMAT ( rpd.record_time, 'yyyy-MM' ), rpd.monitor_id ORDER BY rpd.record_time DESC ) AS rn_desc
rpd.expend,
left(CONVERT(VARCHAR(19), rpd.begin_time, 120), #{timeSub}) AS month_tag,
ROW_NUMBER ( ) OVER ( PARTITION BY left(CONVERT(VARCHAR(19), rpd.begin_time, 120), #{timeSub}), rpd.monitor_id ORDER BY rpd.record_time ASC ) AS rn_asc,
ROW_NUMBER ( ) OVER ( PARTITION BY left(CONVERT(VARCHAR(19), rpd.begin_time, 120), #{timeSub}), rpd.monitor_id ORDER BY rpd.record_time DESC ) AS rn_desc
FROM report_point_dnb rpd
LEFT JOIN base_monitor_info m ON m.monitor_id = rpd.monitor_id