一、行轉列
需要將如下格式
轉換為:
這就是最常見的行轉列,主要原理是利用decode函式、聚集函式(sum),結合group by分組實現的
[sql]view plain
copy
create
table test(
id varchar2(255) primary
keynot
null,
name varchar2(255),
course varchar2(255),
score varchar2(255)
);
insert
into test values(sys_guid(),'zhangsan','語文',85);
insert
into test values(sys_guid(),'zhangsan','數學',78);
insert
into test values(sys_guid(),'zhangsan','英語',90);
insert
into test values(sys_guid(),'lisi','語文',73);
insert
into test values(sys_guid(),'lisi','數學',84);
insert
into test values(sys_guid(),'lisi','英語',92);
行轉列sql語句為:
[sql]view plain
copy
select t.name,
sum(decode(t.course, '語文', score,null)) as chinese,
sum(decode(t.course, '數學', score,null)) as math,
sum(decode(t.course, '英語', score,null)) as english
from test t
group
by t.name
order
by t.name
二、列轉行
將如下格式
轉換為
這就是最常見的列轉行,主要原理是利用sql裡面的union
[sql]view plain
copy
create
table test(
id varchar2(255) primary
keynot
null,
name varchar2(255),
ch_score varchar2(255),
math_score varchar2(255),
en_score varchar2(255)
);
insert
into test values(sys_guid(),'zhangsan',88,76,90);
insert
into test values(sys_guid(),'lisi',91,67,82);
列轉行sql語句為:
[sql]view plain
copy
select
name, '語文' course , ch_score as score from test
union
select
name, '數學' course, math_score as score from test
union
select
name, '英語' course, en_score as score from test
order
byname,course
IT忍者神龜之oracle集合的使用
每組查詢均能得到其結果集,若需將多個查詢結果合併成乙個結果集,則可利用集合運算來實現。如並集 union 並集且不去除重複行 unoin all 交集 intersect 差集 minus 集合命令的目的是將兩個 含以上 sql語句產生的結果合併。由於需要將兩個 含以上 資料集合並 因此字段數量必須...
IT忍者神龜之Windows安裝MySQL解壓版本
今天有位同事問我mysql解壓版本怎麼用 我就他做了乙個文件 1 解壓 2 設定環境變數 3 修改my.ini mysqld basedir d mysql server mysql 5.6.20 win32 datadir d mysql server data port 3306 4 安裝mys...
IT忍者神龜之Easyui擴充套件驗證回顧
extend fn.validatebox.defaults.rules,d a za z0 9 i.test value message 身份證號碼格式不正確 minlength message 請輸入至少 2 個字元.length message 輸入內容長度必須介於和之間.phone d 0 ...