1. 程式人生 > >oracle 行轉列的通用過程

oracle 行轉列的通用過程

createorreplaceprocedureproc(tabname invarchar2, col1 invarchar2, col2 invarchar2, col3 invarchar2, viewname invarchar2default'v_tmp') as sqlstr varchar2(2000):='create or replace view
'||viewname||' as select '||col1||''; c1 sys_refcursor; v1 varchar2(100); beginopen c1 for'select distinct to_char('||col2||') from '||tabname; loop fetch c1 into v1; exitwhen c1%notfound; sqlstr:=sqlstr||' ,max(decode('||col2||','''||v1||''','||col3||'))"'||v1||'"'; end loop;
close c1; sqlstr:=sqlstr||' from '||tabname||' group by '||col1; execute immediate sqlstr; endproc;

相關推薦

oracle 通用過程

createorreplaceprocedureproc(tabname invarchar2, col1 invarchar2, col2 invarchar2,

Oracle

cat pre case nbsp 運用 分隔 nvl ase partition 一、簡易運用 ——>沒轉之前一個主號綁定多個副號的多行輸出(像移動的歡樂在線) SELECT f.town_name 鎮區, f.school_name 學校,

oracle ,多

問題描述:    應公司要求,設計功能,一個ID,對應不同的值,展示的時候不同的值拼接展示,如何實現;   解決思路:     1) 拼接字串,想到了 oracle  Function(),這樣肯定能實現,但是比較麻煩;

oracle轉行、連續日期數字實現方式及mybatis下實現方式

九月份複習,十月份考試,十月底一直沒法收心,趕在十一初 由於不可抗拒的原因又不得不重新找工作就;欸~, 又是一番折騰,從入職到現在,可又沒法閒下來了... 這次就簡單介紹下oracle資料庫下如何實現行轉列、列轉行及此在mybatis中的實現方式,就具體用法我就不詳細說了,主要介紹下實戰中所碰到的坑

Oracle+排序

--1.刪除臨時表 drop table biz_bus_station_direct_0711; --2.將站點資料等放入臨時表 create table biz_bus_station_direct

Oracle pivot 、轉行unpivot 的Sql語句總結

多行轉字串 這個比較簡單,用||或concat函式可以實現 print? 1.  select concat(id,username) str from app_user   2.     3.  select id||username str from app_use

oracle 例子程式碼

select * from (select deptno,job,sal from emp) pivot(        sum(sal)        for job in (          'ANALYST' as analyst_sal,          'MA

偶遇Oracle

行轉列應該是資料庫比較常見的操作了,在oracle中可以使用pivot、decode,可以參考呆瓜的blog: SELECT name, MAX(DECODE(course, 'j

oracle 轉行

目錄結構如下: 行轉列 列轉行 [一]、行轉列 1.1、初始測試資料 表結構:TEST_TB_GRADE Sql程式碼   createtable TEST_TB_GRADE   (     ID        NUMBER(10) notnull,

Oracle 小結

      最近在工作中,對行轉列進行了應用,在此做一個簡單的小結。       轉換過程如下:     1、建立表結構 CREATE TABLE RowToCol ( ID NUMBE

oracle轉行

行轉列:PIVOT列轉行:UNPIVOT這兩個是在oracle11g上面新增的函式。下面舉例說明用法。PIVOT:學生成績表,原資料:select class_name, student_name, course_type, result, created_date fr

Oracle pivot函式基本用法

2018年9月30日22點,眼看著就10月份了,回頭看下,8月份就寫了一篇部落格,9月一篇都沒寫,想著還是得續一續。 剛好前幾天,幫一個群友處理了一個關於Oracle中行轉列,根據查詢中有的專案,動態轉列的做法。想著也挺好玩,不過看下時間,不太充足。所以暫時先寫個Oracl

Oracle decode函式

固定列數的行列轉換如 student subject grade---------------------------student1 語文 80student1 數學 70student1 英語 60student2 語文 90student2 數學 80student2

Oracle 兩種方法

log src sco watermark insert core ora 記錄 sel 1.新建一個名為TEST表 2.向TEST表中添加數據 INSERT INTO TEST(STUDENT,COURSE,SCORE)select ‘張三‘,‘語文‘,78 from d

oracle (用函式和遊標完成)

create table students (student_id varchar2(32), student_name varchar2(180), student_age number ) insert into students values('1','金瑞','1

Oracle函式Listagg()和wm_co…

Oracle行轉列函式Listagg()和wm_concat(column)函式 這是一個Oracle的行轉列函式:LISTAGG() 先看示例程式碼: Sql程式碼  WITH T

Oracle的一次經歷

需求如下,由於系統專案改造,之前黨員各個月份的成績如下表所示: 存取資料如下: 新專案表結構作了調整,每個黨員每一年一條記錄,12個月份的資料變成了列欄位,主鍵變成由年份和黨員id構成,表結構如下: 月統計得分和季統計得分的資料儲存是有格式要求

Oracle 總結 Case When,Decode,PIVOT 三種方式

最近又碰到行專列問題了,當時不假思索用的是子查詢,做完後我詢問面試管行專列標正的寫法應該如何寫,他告訴我說應該用"Decode",索性我就總結一下,一共三種方式  --=========建表語句  CREATE TABLE populations(  country VARCHAR2(20),  sex I

oracle 資料量太大報錯

wmsys.wm_concat  這個函式存在缺陷,資料量大的時候,容易報ora-22813     沒辦法只能通過重新定義一個行轉列函式,copy了一下 http://www.savedba.com/?p=955  這個人寫的函式 有點問題,自己又改了下。 drop ty

oracle函式WMSYS.WM_CONCAT用法

select t.rank, t.Name from t_menu_item t; 10 CLARK 10 KING 10 MILLER 20 ADAMS 20 FORD 20 JONES 20 SCOTT 20 SMITH 30 ALLEN 30 BLAKE 30 JAMES 30 MARTIN 30 T