Hive中2列多行转成多列1行的问题?

173 阅读1分钟

1

select    --case    --when month = '01' THEN sum_qty    --end as '01', --SqlParseException: Sql 1 Encountered "\'01\'" at line 4, column 12. Please check [end as '01',].    sum(        case            when month = '01' THEN sum_qty        end    ) as `01`,     sum(        case            when month = '02' THEN sum_qty        end    ) as `02`,    sum(        case            when month = '03' THEN sum_qty        end    ) as `03`,    sum(        case            when month = '04' THEN sum_qty        end    ) as `04`,    sum(        case            when month = '05' THEN sum_qty        end    ) as `05`from    (        select            date_format(order_day, 'MM') as month,            sum(qty) as sum_qty        from            (                select                    11 as order_id,                    '2022-01-02 ' as order_day,                    1 as qty                union all                select                    12 as order_id,                    '2022-02-02' as order_day,                    2 as qty                union all                select                    13 as order_id,                    '2022-03-02' as order_day,                    3 as qty                union all                select                    14 as order_id,                    '2022-04-02' as order_day,                    4 as qty                union all                select                    15 as order_id,                    '2022-04-02' as order_day,                    5 as qty                union all                select                    16 as order_id,                    '2022-05-02' as order_day,                    6 as qty                union all                select                    9 as order_id,                    '2021-01-02' as order_day,                    6 as qty                union all                select                    8 as order_id,                    '2021-02-06' as order_day,                    7 as qty            ) t1        group by            date_format(order_day, 'MM')    ) t2;

1