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...