sql語(yǔ)句實(shí)現(xiàn)行轉(zhuǎn)列的3種方法實(shí)例
前言
一般在做數(shù)據(jù)統(tǒng)計(jì)的時(shí)候會(huì)用到行轉(zhuǎn)列,假如要統(tǒng)計(jì)學(xué)生的成績(jī),數(shù)據(jù)庫(kù)里查詢(xún)出來(lái)的會(huì)是這樣的,但這并不能達(dá)到想要的效果,所以要在查詢(xún)的時(shí)候做一下處理,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹。
CREATE TABLE TestTable( [Id] [int] IDENTITY(1,1) NOT NULL, [UserName] [nvarchar](50) NULL, [Subject] [nvarchar](50) NULL, [Source] [numeric](18, 0) NULL ) ON [PRIMARY] go INSERT INTO TestTable ([UserName],[Subject],[Source]) SELECT N'張三',N'語(yǔ)文',60 UNION ALL SELECT N'李四',N'數(shù)學(xué)',70 UNION ALL SELECT N'王五',N'英語(yǔ)',80 UNION ALL SELECT N'王五',N'數(shù)學(xué)',75 UNION ALL SELECT N'王五',N'語(yǔ)文',57 UNION ALL SELECT N'李四',N'語(yǔ)文',80 UNION ALL SELECT N'張三',N'英語(yǔ)',100 GO
這里我用了三種方法來(lái)實(shí)現(xiàn)行轉(zhuǎn)列第一種:靜態(tài)行轉(zhuǎn)列
select UserName 姓名, sum(case Subject when '語(yǔ)文' then Source else 0 end) 語(yǔ)文,sum(case Subject when '數(shù)學(xué)' then Source else 0 end) 數(shù)學(xué), sum(case Subject when '英語(yǔ)' then Source else 0 end) 英語(yǔ) from TestTable group by UserName
用povit行轉(zhuǎn)列
select * from (select UserName,Subject,Source from TestTable) testpivot(sum(Source) for Subject in(語(yǔ)文,數(shù)學(xué),英語(yǔ)) ) pvt
用存儲(chǔ)過(guò)程行轉(zhuǎn)列
alter proc pro_test @userImages varchar(200), @Subject varchar(20), @Subject1 varchar(200), @TableName varchar(50) as declare @sql varchar(max)='select * from (select '+@userImages+' from'+@TableName+') tab pivot ( sum('+@Subject+') for Subject('+@Subject1+') ) pvt' exec (@sql) go exec pro_test 'UserName,Subject,Source', 'TestTable', 'Subject', '語(yǔ)文,數(shù)學(xué),英語(yǔ)'
它們的效果都是這樣的
以上三種方式實(shí)現(xiàn)行轉(zhuǎn)列,我們可以根據(jù)自己的需求采用不同的方法
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
SQL 隨機(jī)查詢(xún) 包括(sqlserver,mysql,access等)
SQL 隨機(jī)查詢(xún) 包括(sqlserver,mysql,access等),需要的朋友可以參考下,目的一般是為了隨機(jī)讀取數(shù)據(jù)庫(kù)中的記錄。2009-10-10datagrip如何找到數(shù)據(jù)庫(kù)和表
這篇文章主要介紹了datagrip入坑指南(如何找到數(shù)據(jù)庫(kù)和表)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-09-09Navicat?Premium?15?工具自動(dòng)被殺毒防護(hù)軟件刪除的兩種解決方法
這篇文章主要介紹了Navicat?Premium?15?工具自動(dòng)被殺毒防護(hù)軟件刪除的兩種解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-02-02Navicat Premium 15無(wú)限試用注冊(cè)表修改的方法詳解
這篇文章主要介紹了Navicat Premium 15無(wú)限試用注冊(cè)表修改的方法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用SQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05sql中l(wèi)eft join的效率分析與提高效率方法
網(wǎng)站隨著數(shù)據(jù)量與訪問(wèn)量越來(lái)越大,訪問(wèn)的速度變的越來(lái)越慢,于是開(kāi)始想辦法解決優(yōu)化速度慢的原因,下面是對(duì)程序中一條sql的分析與提高效率的過(guò)程2018-03-032024 Navicat Premium最新版簡(jiǎn)體中文版激活永久圖文詳細(xì)教程(親測(cè)可用)
這篇文章主要介紹了2024 Navicat Premium最新版簡(jiǎn)體中文版激活永久圖文詳細(xì)教程,文章通過(guò)圖文結(jié)合的方式給大家講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-09-09收藏的SQL知識(shí)以及SQL語(yǔ)句簡(jiǎn)單實(shí)踐通俗易懂
首先說(shuō)明,這個(gè)筆者2年前學(xué)習(xí)SQL的遺漏下來(lái)的筆記,由于參加完騰訊的筆試,內(nèi)容比較偏向數(shù)據(jù)機(jī)構(gòu)和編譯以及數(shù)據(jù)庫(kù),剛好要換臺(tái)本本,心里不想把它弄死在硬盤(pán)里,覺(jué)得蠻好的,所以把它都分享了2012-06-06海量數(shù)據(jù)庫(kù)的查詢(xún)優(yōu)化及分頁(yè)算法方案集合1/2
海量數(shù)據(jù)庫(kù)的查詢(xún)優(yōu)化及分頁(yè)算法方案集合1/2...2007-03-03