SELECT NAME ,SUM( CASE SUBSTRING(mon, 6) WHEN '01' THEN sa ELSE 0 END ) AS '01月',
SUM( CASE SUBSTRING(mon, 6) WHEN '02' THEN sa ELSE 0 END ) AS '02月',
SUM( CASE SUBSTRING(mon, 6) WHEN '03' THEN sa ELSE 0 END ) AS '03月',
mon FROM sale
GROUP BY mon
SELECT
ROUND((b.num / a.num) * 100, 2) || '%' AS tpnum,
nvl (b.num, 0) AS tnum,
nvl (a.num, 0) AS num,
CAST(c.time2 AS VARCHAR (10)) AS mon
FROM
(SELECT
COUNT(t.did) num,
to_char (t.ts, 'yyyy-MM') AS d
FROM
RCV_TB t
WHERE to_char (t.ts, 'yyyy') = '2019'
AND t.UNITID = '1001'
GROUP BY to_char (t.ts, 'yyyy-MM')) a
LEFT JOIN
(SELECT
*
FROM
(SELECT
COUNT(t.did) num,
to_char (t.ts, 'yyyy-MM') AS d
FROM
RCV_TB t
WHERE t.isnet = '1'
GROUP BY to_char (t.ts, 'yyyy-MM'))) b
ON a.d = b.d
RIGHT JOIN
(SELECT
'01' AS time2
FROM
DUAL
UNION
ALL
SELECT
'02' AS time2
FROM
DUAL
UNION
ALL
SELECT
'03' AS time2
FROM
DUAL
UNION
ALL
SELECT
'04' AS time2
FROM
DUAL
UNION
ALL
SELECT
'05' AS time2
FROM
DUAL
UNION
ALL
SELECT
'06' AS time2
FROM
DUAL
UNION
ALL
SELECT
'07' AS time2
FROM
DUAL
UNION
ALL
SELECT
'08' AS time2
FROM
DUAL
UNION
ALL
SELECT
'09' AS time2
FROM
DUAL
UNION
ALL
SELECT
'10' AS time2
FROM
DUAL
UNION
ALL
SELECT
'11' AS time2
FROM
DUAL
UNION
ALL
SELECT
'12' AS time2
FROM
DUAL) c
ON SUBSTR(a.d, 6, 2) = c.time2
ORDER BY c.time2