方案一:
SELECT
SUM(aa) as aa,
SUM(bb) as bb
FROM (
SELECT
dataTime,
metric_value as aa,
0 as bb
FROM UserTable
WHERE
metric_code='aa'
UNION ALL
SELECT
dataTime,
0 as aa,
metric_value as bb
FROM
UserTable
WHERE
metric_code='bb'
) boss
WHERE 1=1
AND dataTime>='2018-05-01'
方案二:
SELECT
a.dataTime,
MAX(case a.metric_code when 'aa' then a.metric_value else 0 end) aa,
MAX(case a.metric_code when 'bb' then a.metric_value else 0 end) bb
FROM(
SELECT
DATE_FORMAT(dataTime,'%Y-%m') dataTime,
metric_code,
sum(metric_value) metric_value
FROM UserTable
WHERE
dataTime>='2018-05-01'
AND
(metric_code='aa'
OR metric_code='bb')
GROUP BY DATE_FORMAT(dataTime,'%Y-%m'),metric_code
)a GROUP BY dataTime