sqlserver下將數(shù)據(jù)庫記錄的列記錄轉(zhuǎn)換成行記錄的方法
更新時(shí)間:2011年07月11日 20:46:21 作者:
sqlserver下將數(shù)據(jù)庫記錄的列記錄轉(zhuǎn)換成行記錄的方法分享,需要的朋友可以參考下。
假設(shè)有張學(xué)生成績表(tb)如下:
Name Subject Result
張三 語文 74
張三 數(shù)學(xué) 83
張三 物理 93
李四 語文 74
李四 數(shù)學(xué) 84
李四 物理 94
想變成
姓名 語文 數(shù)學(xué) 物理
---------- ----------- ----------- -----------
李四 74 84 94
張三 74 83 93
SQL 語句如下:
create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result int
)
insert into tb(Name , Subject , Result) values('張三' , '語文' , 74)
insert into tb(Name , Subject , Result) values('張三' , '數(shù)學(xué)' , 83)
insert into tb(Name , Subject , Result) values('張三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('李四' , '語文' , 74)
insert into tb(Name , Subject , Result) values('李四' , '數(shù)學(xué)' , 84)
insert into tb(Name , Subject , Result) values('李四' , '物理' , 94)
go
--靜態(tài)SQL,指subject只有語文、數(shù)學(xué)、物理這三門課程。
select name 姓名,
max(case Subject when '語文' then result else 0 end) 語文,
max(case Subject when '數(shù)學(xué)' then result else 0 end) 數(shù)學(xué),
max(case Subject when '物理' then result else 0 end) 物理
from tb
group by name
--動(dòng)態(tài)SQL,指subject不止語文、數(shù)學(xué)、物理這三門課程。
declare @sql varchar(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)
Name Subject Result
張三 語文 74
張三 數(shù)學(xué) 83
張三 物理 93
李四 語文 74
李四 數(shù)學(xué) 84
李四 物理 94
想變成
姓名 語文 數(shù)學(xué) 物理
---------- ----------- ----------- -----------
李四 74 84 94
張三 74 83 93
SQL 語句如下:
復(fù)制代碼 代碼如下:
create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result int
)
insert into tb(Name , Subject , Result) values('張三' , '語文' , 74)
insert into tb(Name , Subject , Result) values('張三' , '數(shù)學(xué)' , 83)
insert into tb(Name , Subject , Result) values('張三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('李四' , '語文' , 74)
insert into tb(Name , Subject , Result) values('李四' , '數(shù)學(xué)' , 84)
insert into tb(Name , Subject , Result) values('李四' , '物理' , 94)
go
--靜態(tài)SQL,指subject只有語文、數(shù)學(xué)、物理這三門課程。
select name 姓名,
max(case Subject when '語文' then result else 0 end) 語文,
max(case Subject when '數(shù)學(xué)' then result else 0 end) 數(shù)學(xué),
max(case Subject when '物理' then result else 0 end) 物理
from tb
group by name
--動(dòng)態(tài)SQL,指subject不止語文、數(shù)學(xué)、物理這三門課程。
declare @sql varchar(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)
相關(guān)文章
sqlserver合并DataTable并排除重復(fù)數(shù)據(jù)的通用方法分享
網(wǎng)上合并DataTable通用方法的文章很多,結(jié)合項(xiàng)目開發(fā)中的常用需求,并借鑒網(wǎng)上的做法,寫了一個(gè)合并DataTable的通用方法,主要功能是合并兩個(gè)DataTable(結(jié)構(gòu)可以不同,如字段不完全一致),并可以根據(jù)某一列值進(jìn)行排重處理2011-12-12
新手SqlServer數(shù)據(jù)庫dba需要注意的一些小細(xì)節(jié)
這篇文章主要介紹了新手SqlServer數(shù)據(jù)庫dba需要注意的一些小細(xì)節(jié),本文講解了15個(gè)小細(xì)節(jié)、小技巧及需要注意的地方,需要的朋友可以參考下2015-02-02
一個(gè)有趣的SQL命題 用一條語句切換BIT型的真假值
有個(gè)需求,用一條SQL語句(SQL SERVER)的,切換某個(gè)BIT字段值。也就是說從TRUE變FALSE,從FALSE到TRUE。2009-08-08
SQL實(shí)現(xiàn)模糊查詢的四種方法總結(jié)
本文主要介紹了SQL實(shí)現(xiàn)模糊查詢的四種方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
SQLserver刪除某數(shù)據(jù)庫中所有表實(shí)現(xiàn)思路
方便刪除數(shù)據(jù)庫中所有的數(shù)據(jù)表,清空數(shù)據(jù)庫,有些有約束,不能直接delete,因?yàn)槟菢犹kU(xiǎn)了所以需要先刪除庫中的約束,接下來提供詳細(xì)實(shí)現(xiàn)代碼,感興趣的你可以參考下哦,或許對(duì)你學(xué)習(xí)有所幫助2013-02-02
MSSQL MySQL 數(shù)據(jù)庫分頁(存儲(chǔ)過程)
有關(guān)分頁 SQL 的資料很多,有的使用存儲(chǔ)過程,有的使用游標(biāo)。本人不喜歡使用游標(biāo),我覺得它耗資、效率低;使用存儲(chǔ)過程是個(gè)不錯(cuò)的選擇,因?yàn)榇鎯?chǔ)過程是經(jīng)過預(yù)編譯的,執(zhí)行效率高,也更靈活2012-01-01
在SQL語句中,where 子句:where t.modifier = null ,這里不可以使用NULL關(guān)鍵字,因?yàn)樗皇且粋€(gè)真正的值,它僅僅是一個(gè)符號(hào),因?yàn)樗闹凳俏粗摹?/div> 2011-04-04
MSsql每天自動(dòng)備份數(shù)據(jù)庫并每天自動(dòng)清除log的腳本
有自己服務(wù)器的朋友需要用到的東西,因?yàn)閙ssql數(shù)據(jù)需要經(jīng)常備份2008-09-09最新評(píng)論

