oracle 行轉列 用函式和游標完成

2021-06-18 15:01:37 字數 1745 閱讀 1737

create table students

(student_id varchar2(32),

student_name varchar2(180),

student_age number

)insert into students values('1','金瑞','14');

insert into students values('2','中軍','15');

insert into students values('3','於瑞','14');

insert into students values('4','快樂','14');

insert into students values('5','劉強','14');

insert into students values('6','紅豆','14');

insert into students values('7','張明','14');

insert into students values('8','宿遷','14');

insert into students values('9','藍蝶','14');

insert into students values('0','奇美','14');

-- 行轉列 將多行資料轉換為一列。例如學生表中將學生姓名串起來

create or replace

function getstudentnamestring

return varchar2 as

begin

declare cursor cu_student is

select student_name from students order by student_id;

student_name varchar2(180);

rowstring varchar2(1000);

begin

open cu_student;

fetch cu_student into student_name;

while cu_student%found loop

rowstring :=rowstring || student_name || ',';

fetch cu_student into student_name;

end loop;

return substr(rowstring,1,length(rowstring)-1);

end;

end getstudentnamestring;

-- 測試

select getstudentnamestring() from dual;

-- **說明

declare cursor cu_student is select student_name from students order by student_id;

用於宣告乙個游標,該游標可用於迴圈獲得資料表中所有學生姓名記錄;

fetch cu_student into student_name;

用於將游標所指向的當前記錄的資料賦值給student_name;

while cu_student%found loop

用於迴圈處理游標所指向的記錄;

rowstring :=rowstring || student_name || ',';

用於將變數student_name的值新增到rowstring的末尾。

oracle函式wm concat行轉列

資料庫中的兩張表 教師表 teacher 教師所教科目表 teacher km 現在要查詢教師資訊列表,把教師的科目資訊以語文 數學這種形式展示,也就是說需要將多條科目資訊取到名稱放到教師的一條記錄中。teacher id jsmc csny ff8080815233e5e0015233eb700c...

oracle 行轉列,多行轉列

問題描述 應公司要求,設計功能,乙個id,對應不同的值,展示的時候不同的值拼接展示,如何實現 解決思路 1 拼接字串,想到了 oracle function 這樣肯定能實現,但是比較麻煩 2 oracle 自帶的乙個函式 wm concat 函式 非常給力 上 測試表1 create table c...

oracle中的行轉列函式

最近專案需要進行行轉列,經過上網查資料發現了wmsys.wm concat和listagg函式,在這分享給大家 wmsys.wm concat是oracle 10g推出的,用來連線字串,listagg是oracle 11g推出的,它的作用和wmsys.wm concat是一樣的,但是他不支援list...