最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle的數(shù)據(jù)表中行轉(zhuǎn)列與列轉(zhuǎn)行的操作實例講解

 更新時間:2015年12月17日 17:19:41   作者:真正男子漢  
這篇文章主要介紹了Oracle數(shù)據(jù)表中行轉(zhuǎn)列與列轉(zhuǎn)行的操作方法,這里分靜態(tài)和動態(tài)情況作出了分類討論,需要的朋友可以參考下

行轉(zhuǎn)列
一張表

20151217170849821.jpg (220×151)

查詢結(jié)果為

20151217170911011.jpg (170×63)

--行轉(zhuǎn)列

select years,(select amount from Tb_Amount as A where month=1 and A.years=Tb_Amount.years)as m1,
(select amount from Tb_Amount as A where month=2 and A.years=Tb_Amount.years)as m2,
(select amount from Tb_Amount as A where month=3 and A.years=Tb_Amount.years)as m3
from Tb_Amount group by years

或者為

select years as 年份,
sum(case when month='1' then amount end) as 一月,
 sum(case when month='2' then amount end) as 二月,
sum(case when month='3' then amount end) as 三月
from dbo.Tb_Amount group by years order by years desc

2.人員信息表包括姓名 時代  金額

20151217170947066.jpg (254×150)

顯示行轉(zhuǎn)列
姓名     時代       金額

姓名  年輕         中年       老年

張麗 1000000.00 4000000.00    500000000.00

孫子 2000000.00   12233335.00  4552220010.00

20151217171005767.jpg (322×84)

select uname as 姓名,
SUM(case when era='年輕' then amount end) as 年輕,
SUM(case when era='中年' then amount end) as 中年,
SUM(case when era='老年' then amount end) as 老年
from Tb_People group by uname order by uname desc

 3.學(xué)生表 [Tb_Student]

20151217171053471.jpg (204×144)

顯示效果

20151217171109012.jpg (191×56)

靜態(tài)SQL,指subject只有語文、數(shù)學(xué)、英語這三門課程。

select sname as 姓名,
max(case Subject when '語文' then grade else 0 end) as 語文,
max(case Subject when '數(shù)學(xué)' then grade else 0 end) as 數(shù)學(xué),
max(case Subject when '英語' then grade else 0 end) as 英語
from dbo.Tb_Student group by sname order by sname desc

--動態(tài)SQL,指subject不止語文、數(shù)學(xué)、英語這三門課程。

declare @sql varchar(8000)
set @sql = 'select sname as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then grade else 0 end) [' + Subject + ']'
from (select distinct Subject from Tb_Student) as a
set @sql = @sql + ' from Tb_Student group by sname order by sname desc'
exec(@sql)

oracle中Decode()函數(shù)使用 然后將這些累計求和(sum部分)

select t.sname AS 姓名,
sum(decode(t.subject,'語文',grade,null))語文 ,
sum(decode(t.subject,'數(shù)學(xué)',grade,null)) 數(shù)學(xué),
sum(decode(t.subject,'英語',grade,null)) 英語
from Tb_Student t group by sname order by sname desc


列轉(zhuǎn)行

20151217171127272.jpg (225×66)

生成

20151217171144405.jpg (223×134)

sql代碼
生成靜態(tài):

select *
from (select sname,[Course ] ='數(shù)學(xué)',[Score]=[數(shù)學(xué)] from Tb_students union all
select sname,[Course]='英語',[Score]=[英語] from Tb_students union all
select sname,[Course]='語文',[Score]=[語文] from Tb_students)t
order by sname,case [Course] when '語文' then 1 when '數(shù)學(xué)' then 2 when '英語' then 3 end
go
 --列轉(zhuǎn)行的靜態(tài)方案:UNPIVOT,sql2005及以后版本
 
 SELECT sname,Subject, grade
 from dbo.Tb_students
 unpivot(grade for Subject in([語文],[數(shù)學(xué)],[英語]))as up
 GO
 
 
 --列轉(zhuǎn)行的動態(tài)方案:UNPIVOT,sql2005及以后版本
 --因為行是動態(tài)所以這里就從INFORMATION_SCHEMA.COLUMNS視圖中獲取列來構(gòu)造行,同樣也使用了XML處理。
 declare @s nvarchar(4000)
select @s=isnull(@s+',','')+quotename(Name)
from syscolumns where ID=object_id('Tb_students') and Name not in('sname')
order by Colid
exec('select sname,[Subject],[grade] from Tb_students unpivot ([grade] for [Subject] in('+@s+'))b')

go
select
  sname,[Subject],[grade]
from
  Tb_students
unpivot
  ([grade] for [Subject] in([數(shù)學(xué)],[英語],[語文]))b

相關(guān)文章

  • Oracle數(shù)據(jù)庫中的觸發(fā)器詳解

    Oracle數(shù)據(jù)庫中的觸發(fā)器詳解

    這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中觸發(fā)器的相關(guān)資料,觸發(fā)器也是保護數(shù)據(jù)完整性的一種重要方法,于存儲過程不同的是,觸發(fā)器是通過事件進行觸發(fā)被執(zhí)行,存儲過程需要被調(diào)用執(zhí)行,需要的朋友可以參考下
    2024-02-02
  • Oracle?CPU高的問題及分析

    Oracle?CPU高的問題及分析

    這篇文章主要介紹了Oracle?CPU高的問題及分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Oracle和MySQL的數(shù)據(jù)導(dǎo)入為何差別這么大

    Oracle和MySQL的數(shù)據(jù)導(dǎo)入為何差別這么大

    這篇文章主要介紹了Oracle和MySQL的數(shù)據(jù)導(dǎo)入有哪些區(qū)別,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Oracle通過遞歸查詢父子兄弟節(jié)點方法示例

    Oracle通過遞歸查詢父子兄弟節(jié)點方法示例

    這篇文章主要給大家介紹了關(guān)于Oracle如何通過遞歸查詢父子兄弟節(jié)點的相關(guān)資料,遞歸查詢對各位程序員來說應(yīng)該都不陌生,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • oracle 數(shù)據(jù)按主鍵刪除慢問題的解決方法

    oracle 數(shù)據(jù)按主鍵刪除慢問題的解決方法

    下面小編就為大家?guī)硪黄猳racle 數(shù)據(jù)按主鍵刪除慢問題的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Oracle如何直接運行OS命令(上)

    Oracle如何直接運行OS命令(上)

    Oracle如何直接運行OS命令(上)...
    2007-03-03
  • Linux下啟動Oracle服務(wù)和監(jiān)聽程序步驟

    Linux下啟動Oracle服務(wù)和監(jiān)聽程序步驟

    這篇文章給大家介紹了Linux下啟動Oracle服務(wù)和監(jiān)聽程序步驟,在文章末尾給大家介紹了Oracle數(shù)據(jù)庫的啟動和關(guān)閉方式小結(jié),感興趣的朋友一起看看吧
    2017-08-08
  • oracle存儲過程常用的技巧(詳)

    oracle存儲過程常用的技巧(詳)

    存儲過程是在大型數(shù)據(jù)庫系統(tǒng)中存儲過程在數(shù)據(jù)庫中經(jīng)過第一次編譯后就不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(shù)來,通過本篇文章帶領(lǐng)大家去學(xué)習(xí)oracle存儲過程常用的技巧,感興趣的朋友一起來學(xué)習(xí)吧
    2015-08-08
  • win x64下安裝oracle 12c出現(xiàn)INS-30131報錯的解決方法

    win x64下安裝oracle 12c出現(xiàn)INS-30131報錯的解決方法

    這篇文章主要介紹了win x64下安裝oracle 12c出現(xiàn)INS-30131報錯的解決方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Oracle外鍵不加索引引起死鎖示例

    Oracle外鍵不加索引引起死鎖示例

    這篇文章主要介紹了Oracle外鍵不加索引引起死鎖的情況及解決,需要的朋友可以參考下
    2014-05-05

最新評論

丹巴县| 乌鲁木齐县| 景泰县| 芜湖县| 曲阳县| 上虞市| 武鸣县| 文化| 杭锦旗| 连城县| 赤城县| 巩留县| 金沙县| 开阳县| 浪卡子县| 麟游县| 华坪县| 伊川县| 伊春市| 通渭县| 蒙山县| 界首市| 蒲江县| 太仓市| 从化市| 巴楚县| 福贡县| 城口县| 靖州| 尼玛县| 大冶市| 高碑店市| 江油市| 犍为县| 城步| 嘉祥县| 客服| 都安| 西乡县| 时尚| 柞水县|