oracle数据库列转行函数
时间: 2023-07-28 16:16:36 浏览: 117
oracle列转行
5星 · 资源好评率100%
Oracle数据库提供了多种列转行的函数,以下是其中几个常用的函数:
1. UNPIVOT函数:将列转换为行。
```
SELECT *
FROM table_name UNPIVOT
(
value FOR column_name IN (column1, column2, column3)
);
```
2. XMLTABLE函数:将XML数据转换为表格形式。
```
SELECT *
FROM XMLTABLE('for $i in /ROWSET/ROW return $i'
PASSING xml_data
COLUMNS column1 VARCHAR2(10) PATH 'COLUMN1',
column2 VARCHAR2(10) PATH 'COLUMN2',
column3 VARCHAR2(10) PATH 'COLUMN3');
```
3. CONNECT BY LEVEL函数:将多列数据合并成单列数据。
```
SELECT column1 || ',' || column2 || ',' || column3 AS new_column
FROM table_name
CONNECT BY LEVEL <= (
SELECT MAX(GREATEST(
NVL(LENGTH(column1), 0),
NVL(LENGTH(column2), 0),
NVL(LENGTH(column3), 0)
))
FROM table_name
);
```
4. CASE语句:将多列数据合并成单列数据。
```
SELECT
CASE WHEN column1 IS NOT NULL THEN column1 || ',' ELSE '' END ||
CASE WHEN column2 IS NOT NULL THEN column2 || ',' ELSE '' END ||
CASE WHEN column3 IS NOT NULL THEN column3 ELSE '' END AS new_column
FROM table_name;
```
以上是几个常用的Oracle列转行函数,可以根据实际需求选择使用。
阅读全文