oracle下可以用函數(shù)decode處理:
在納溪等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站設計、做網(wǎng)站 網(wǎng)站設計制作按需搭建網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,營銷型網(wǎng)站建設,成都外貿(mào)網(wǎng)站建設公司,納溪網(wǎng)站建設費用合理。
select 產(chǎn)品名稱,
sum(decode(季度,'第一季度',銷售額,0)) 第一季度銷售額,
sum(decode(季度,'第二季度',銷售額,0)) 第二季度銷售額,
sum(decode(季度,'第三季度',銷售額,0)) 第三季度銷售額,
sum(decode(季度,'第四季度',銷售額,0)) 第四季度銷售額,
from 表名
group by 產(chǎn)品名稱;
你所謂的行列轉換應該是指縱表轉橫表,橫表轉縱表.
給你個例子
縱表轉橫表:
使用DECODE語句,可以很方便的將縱表轉為橫表,例子如下:
原表查詢結果:
ID MAJOR CURRENT_CREDITS
------ ---------------- ---------------
10000 Computer Science 98
10000 History 88
10001 Computer Science 75
10000 Economics 66
我們要把各科成績從同一列轉到不同的列中去。
SQL?select id,
sum(decode(major,’Computer Science’,current_credits,0)) cs,
sum(decode(major,’History’,current_credits,0)) his,
sum(decode(major,’Economics’,current_credits,0)) eco
from students
group by id
ID CS HIS ECO
------ ----------- ------------- -----
10000 98 88 66
10001 75
橫表轉縱表:
使用 UNION 即可實現(xiàn)將橫表轉為縱表,以上面的表為例:
轉換前:
ID CS HIS ECO
------ ----------- ------------- -----
10000 98 88 66
SQL?select id, ’Computer Science’ major,cs current_credits
from students
union
select id, ’History’ major,his current_credits
from students
union
select id, ’Economics’ major,eco current_credits
from students
ID MAJOR CURRENT_CREDITS
------ ---------------- ---------------
10000 Computer Science 98
10000 History 88
10000 Economics 66
需要oracle
8i以上的版本,可以實現(xiàn)類似sql
server的返回結果集(就是table)的函數(shù)。
需要參考的oracle資料:
索引表,table函數(shù),
pipelined。依次去網(wǎng)上搜索,會得到你要的答案。
如果再不行,我可以給你sample。
推薦用WM_CONCAT函數(shù)
SELECT A.STD, WM_CONCAT(A.F3) NEW_RESUL
FROM (SELECT STD, F3
FROM (SELECT STD, F1 F3
FROM TABLE_A
UNION ALL
SELECT STD, F2 F3 FROM TABLE_A) A) A
GROUP BY A.STD