oracle 行转列(PIVOT 多个行数据按照指定的列进行汇总) 列转行(UNPIVOT)
-- PIVOT是Oracle 11g版本引入的一个功能, 用来做行转列
-- as count1 as count2必须加上, 这样列名就没有引号了
使用场景:PIVOT常用于数据透视、数据汇总和数据展示等场景,例如将多个行数据按照指定的列进行汇总,生成一条汇总数据,或将多条行数据合并为一行展示数据。
SELECT *
FROM (
SELECT value,
CASE WHEN ROWNUM = 1 THEN 'count1' WHEN ROWNUM = 2 THEN 'count2' END AS category
FROM (select 1 value from dual union select 2 from dual) a
)
PIVOT (
MAX(value) FOR category IN ('count1' as count1 , 'count2' as count2)
)
MySQL中,实现行转列的操作通常需要使用CASE WHEN语句结合GROUP BY和聚合函数来完成