oracle 动态行转列的sql
时间: 2023-09-04 19:10:01 浏览: 106
在Oracle中,可以使用动态SQL来实现动态行转列的功能。以下是一个示例SQL:
```
DECLARE
l_query VARCHAR2(4000);
l_cursor SYS_REFCURSOR;
l_result VARCHAR2(4000);
BEGIN
l_query := 'SELECT id, col_name, col_value FROM my_table';
OPEN l_cursor FOR l_query;
LOOP
FETCH l_cursor INTO l_id, l_col_name, l_col_value;
EXIT WHEN l_cursor%NOTFOUND;
IF l_col_name = 'col1' THEN
l_result := l_col_value;
ELSE
l_result := l_result || ', ' || l_col_value;
END IF;
END LOOP;
CLOSE l_cursor;
DBMS_OUTPUT.PUT_LINE(l_result);
END;
```
上述SQL会动态地查询表`my_table`中的数据,并将每一行的数据按照指定的列名进行转换。这里的示例中是将`col1`列的值作为新的列值,其他列的值作为新的行值。在实际使用时,需要根据具体的需求进行修改。
阅读全文