oracle列设置标题,oracle实现某一列的值转换为列标题
步驟一:創建測試表
CREATE TABLE EMP
(
EMPNO NUMBER(4),
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,
DEPTNO NUMBER(2)
);
步驟二:插入測試數據
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981',1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD',to_date('22-2-1981',1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981',2975,20);
INSERT INTO EMP VALUES
(7654,'MARTIN',to_date('28-9-1981',1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE',to_date('1-5-1981',2850,30);
INSERT INTO EMP VALUES
(7782,'CLARK',to_date('9-6-1981',2450,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-7-1987','dd-mm-yyyy')-85,3000,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',to_date('17-11-1981',5000,10);
INSERT INTO EMP VALUES
(7844,'TURNER',to_date('8-9-1981',1500,30);
INSERT INTO EMP VALUES
(7876,'ADAMS',7788,to_date('13-7-87','dd-mm-yyyy')-51,1100,20);
INSERT INTO EMP VALUES
(7900,'JAMES',to_date('3-12-1981',950,30);
INSERT INTO EMP VALUES
(7902,'FORD',20);
INSERT INTO EMP VALUES
(7934,'MILLER',7782,to_date('23-1-1982',1300,10);
commit;
步驟三:實現列值轉換為列標題(這里以JOB列進行轉換)
declare
c1 sys_refcursor;
v_job emp.job%type;
v_sql varchar2(1024):='';
begin
v_sql:='select deptno';
open c1 for select distinct job from emp;
loop
fetch c1 into v_job;
exit when c1%notfound;
v_sql:=v_sql||',count(case job when '''||v_job||''' then job else null end) as '||v_job;
end loop;
close c1;
v_sql:=v_sql||' from emp group by deptno';
dbms_output.put_line(v_sql);--這條語句的輸出,就是我們想要的sql語句
end;
/
--輸出語句如下
select deptno,
count(case job when 'CLERK' then job else null end) as CLERK,
count(case job when 'SALESMAN' then job else null end) as SALESMAN,
count(case job when 'PRESIDENT' then job else null end) as PRESIDENT,
count(case job when 'MANAGER' then job else null end) as MANAGER,
count(case job when 'ANALYST' then job else null end) as ANALYST
from emp group by deptno
--對應的執行結果如下:
總結
如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。
本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的oracle列设置标题,oracle实现某一列的值转换为列标题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsdk php,jsdk.php ·
- 下一篇: oracle提高io,【转】Oracle