Oracle实现列向行转换的技巧(oracle把列变成行)
数据库中的行与列的转换是一项基本的技术,在Oracle数据库中可以通过使用PIVOT子句来实现行列转换。此外,可以使用Oracle CASE和GROUP BY子句,结合实现SQL的“行转列”技术。
要基于Case实现行转换,你需要一个外部表,它就是要转换的行,它将作为SQL查询中的case表达式。这是ORACLE中行转列转换的基本结构,可以用来实现行列转换:
SELECT
,
MAX(CASE
WHEN THEN
END) AS
FROM
GROUP BY
下面是一个简单的例子,使用Oracle case结构实现行列转换。当前表中有4列,我们要将第三列列值转换到第二个字段,以行的形式列出。
以下是要实现的例子的表:
COL1 | COL2 | COL3
———————————-
Name1 | Val1 | Res1
Name1 | Val2 | Res2
Name2 | Val1 | Res3
Name2 | Val2 | Res4
下面是使用Case结构实现行列转换的SQL:
SELECT
COL1,
MAX(CASE COL2 WHEN ‘Val1’ THEN COL3 END) AS RES1,
MAX(CASE COL2 WHEN ‘Val2’ THEN COL3 END) AS RES2
FROM tablename
GROUP BY COL1;
执行该SQL语句,将产生行列转换的结果:
COL1 | RES1 | RES2
—————————-
Name1 | Res1 | Res2
Name2 | Res3 | Res4
以上就是使用Oracle CASE实现列向行转换的技巧,非常实用。也可以使用PIVOT子句实现行列转换,但PIVOT子句要求列在固定的位置上,而使用Case可以转换任何位置的列。
编辑:一起学习网
标签:子句,行列,可以使用,结构,数据库中