在Oracle中,你可以使用PIVOT:
SELECT *
FROM table_name
PIVOT (
SUM( fare_evasion_dailybasis )
FOR inspector_id IN (
1 AS insp1,
2 AS insp2,
3 AS insp3,
4 AS insp4,
5 AS insp5,
6 AS insp6,
7 AS insp7,
8 AS insp8,
9 AS insp9
)
)
或条件聚合(适用于 Oracle 和 MySQL):
SELECT t4_date,
SUM( CASE inspector_id WHEN 1 THEN fare_evasion_dailybasis END ) AS insp1,
SUM( CASE inspector_id WHEN 2 THEN fare_evasion_dailybasis END ) AS insp2,
SUM( CASE inspector_id WHEN 3 THEN fare_evasion_dailybasis END ) AS insp3,
SUM( CASE inspector_id WHEN 4 THEN fare_evasion_dailybasis END ) AS insp4,
SUM( CASE inspector_id WHEN 5 THEN fare_evasion_dailybasis END ) AS insp5,
SUM( CASE inspector_id WHEN 6 THEN fare_evasion_dailybasis END ) AS insp6,
SUM( CASE inspector_id WHEN 7 THEN fare_evasion_dailybasis END ) AS insp7,
SUM( CASE inspector_id WHEN 8 THEN fare_evasion_dailybasis END ) AS insp8,
SUM( CASE inspector_id WHEN 9 THEN fare_evasion_dailybasis END ) AS insp9
FROM table_name
GROUP BY t4_date;
对于您的示例数据:
CREATE TABLE table_name ( inspector_id, fare_evasion_dailybasis, t4_date ) AS
SELECT 5, 11, DATE '2020-12-01' FROM DUAL UNION ALL
SELECT 6, 7, DATE '2020-12-01' FROM DUAL UNION ALL
SELECT 7, 4, DATE '2020-12-01' FROM DUAL UNION ALL
SELECT 3, 23, DATE '2020-12-01' FROM DUAL UNION ALL
SELECT 1, 18, DATE '2020-12-01' FROM DUAL UNION ALL
SELECT 2, 5, DATE '2020-12-01' FROM DUAL UNION ALL
SELECT 4, 16, DATE '2020-12-01' FROM DUAL UNION ALL
SELECT 5, 7, DATE '2020-12-02' FROM DUAL UNION ALL
SELECT 6, 9, DATE '2020-12-02' FROM DUAL UNION ALL
SELECT 9, 5, DATE '2020-12-02' FROM DUAL UNION ALL
SELECT 3, 26, DATE '2020-12-02' FROM DUAL UNION ALL
SELECT 6, 2, DATE '2020-12-03' FROM DUAL UNION ALL
SELECT 5, 5, DATE '2020-12-03' FROM DUAL UNION ALL
SELECT 9, 3, DATE '2020-12-03' FROM DUAL UNION ALL
SELECT 7, 12, DATE '2020-12-03' FROM DUAL UNION ALL
SELECT 3, 18, DATE '2020-12-03' FROM DUAL UNION ALL
SELECT 8, 6, DATE '2020-12-03' FROM DUAL UNION ALL
SELECT 1, 16, DATE '2020-12-04' FROM DUAL UNION ALL
SELECT 4, 7, DATE '2020-12-04' FROM DUAL UNION ALL
SELECT 6, 9, DATE '2020-12-04' FROM DUAL UNION ALL
SELECT 5, 5, DATE '2020-12-04' FROM DUAL UNION ALL
SELECT 2, 4, DATE '2020-12-04' FROM DUAL UNION ALL
SELECT 2, 4, DATE '2020-12-05' FROM DUAL UNION ALL
SELECT 5, 8, DATE '2020-12-05' FROM DUAL UNION ALL
SELECT 1, 2, DATE '2020-12-05' FROM DUAL
两个输出:
T4_DATE | INSP1 | INSP2 | INSP3 | INSP4 | INSP5 | INSP6 | INSP7 | INSP8 | INSP9
:----------------- | ----: | ----: | ----: | ----: | ----: | ----: | ----: | ----: | ----:
2020-12-03 00:00:00 | 空 | 空 | 18 | 空 | 5 | 2 | 12 | 6 | 3
2020-12-05 00:00:00 | 2 | 4 | 空 | 空 | 8 | 空 | 空 | 空 | 空
2020-12-02 00:00:00 | 空 | 空 | 26 | 空 | 7 | 9 | 空 | 空 | 5
2020-12-04 00:00:00 | 16 | 4 | 空 | 7 | 5 | 9 | 空 | 空 | 空
2020-12-01 00:00:00 | 18 | 5 | 23 | 16 | 11 | 7 | 4 | 空 | 空
Oracle 数据库小提琴here
MySQL 数据库小提琴here