亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

sqlserver 行列互轉實現小結

2024-08-31 00:58:57
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


--行列互轉
/******************************************************************************************************************************************************
以學生成績為例子,比較形象易懂

整理人:中國風(Roy)

日期:2008.06.06
******************************************************************************************************************************************************/

--1、行互列
--> --> (Roy)生成測試數據

if not object_id('Class') is null
drop table Class
Go
Create table Class([Student] nvarchar(2),[Course] nvarchar(2),[Score] int)
Insert Class
select N'張三',N'語文',78 union all
select N'張三',N'數學',87 union all
select N'張三',N'英語',82 union all
select N'張三',N'物理',90 union all
select N'李四',N'語文',65 union all
select N'李四',N'數學',77 union all
select N'李四',N'英語',65 union all
select N'李四',N'物理',85
Go
--2000方法:
動態:

declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename([Course])+'=max(case when [Course]='+quotename([Course],'''')+' then [Score] else 0 end)'
from Class group by[Course]
exec('select [Student]'+@s+' from Class group by [Student]')


生成靜態:

select
[Student],
[數學]=max(case when [Course]='數學' then [Score] else 0 end),
[物理]=max(case when [Course]='物理' then [Score] else 0 end),
[英語]=max(case when [Course]='英語' then [Score] else 0 end),
[語文]=max(case when [Course]='語文' then [Score] else 0 end)
from
Class
group by [Student]

GO
動態:

declare @s nvarchar(4000)
Select @s=isnull(@s+',','')+quotename([Course]) from Class group by[Course]
exec('select * from Class pivot (max([Score]) for [Course] in('+@s+'))b')

生成靜態:
select *
from
Class
pivot
(max([Score]) for [Course] in([數學],[物理],[英語],[語文]))b

生成格式:
/*
Student 數學 物理 英語 語文
------- ----------- ----------- ----------- -----------
李四 77 85 65 65
張三 87 90 82 78

(2 行受影響)
*/

------------------------------------------------------------------------------------------
go
--加上總成績(學科平均分)

--2000方法:
動態:

declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename([Course])+'=max(case when [Course]='+quotename([Course],'''')+' then [Score] else 0 end)'
from Class group by[Course]
exec('select [Student]'+@s+',[總成績]=sum([Score]) from Class group by [Student]')--加多一列(學科平均分用avg([Score]))

生成動態:

select
[Student],
[數學]=max(case when [Course]='數學' then [Score] else 0 end),
[物理]=max(case when [Course]='物理' then [Score] else 0 end),
[英語]=max(case when [Course]='英語' then [Score] else 0 end),
[語文]=max(case when [Course]='語文' then [Score] else 0 end),
[總成績]=sum([Score]) --加多一列(學科平均分用avg([Score]))
from
Class
group by [Student]

go

--2005方法:

動態:

declare @s nvarchar(4000)
Select @s=isnull(@s+',','')+quotename([Course]) from Class group by[Course] --isnull(@s+',','') 去掉字符串@s中第一個逗號
exec('select [Student],'+@s+',[總成績] from (select *,[總成績]=sum([Score])over(partition by [Student]) from Class) a
pivot (max([Score]) for [Course] in('+@s+'))b ')

生成靜態:

select
[Student],[數學],[物理],[英語],[語文],[總成績]
from
(select *,[總成績]=sum([Score])over(partition by [Student]) from Class) a --平均分時用avg([Score])
pivot
(max([Score]) for [Course] in([數學],[物理],[英語],[語文]))b

生成格式:

/*
Student 數學 物理 英語 語文 總成績
------- ----------- ----------- ----------- ----------- -----------
李四 77 85 65 65 292
張三 87 90 82 78 337

(2 行受影響)
*/

go

--2、列轉行
--> --> (Roy)生成測試數據

if not object_id('Class') is null
drop table Class
Go
Create table Class([Student] nvarchar(2),[數學] int,[物理] int,[英語] int,[語文] int)
Insert Class
select N'李四',77,85,65,65 union all
select N'張三',87,90,82,78
Go

--2000:

動態:

declare @s nvarchar(4000)
select @s=isnull(@s+' union all ','')+'select [Student],[Course]='+quotename(Name,'''')--isnull(@s+' union all ','') 去掉字符串@s中第一個union all
+',[Score]='+quotename(Name)+' from Class'
from syscolumns where ID=object_id('Class') and Name not in('Student')--排除不轉換的列
order by Colid
exec('select * from ('+@s+')t order by [Student],[Course]')--增加一個排序

生成靜態:
select *
from (select [Student],[Course]='數學',[Score]=[數學] from Class union all
select [Student],[Course]='物理',[Score]=[物理] from Class union all
select [Student],[Course]='英語',[Score]=[英語] from Class union all
select [Student],[Course]='語文',[Score]=[語文] from Class)t
order by [Student],[Course]

go
--2005:

動態:

declare @s nvarchar(4000)
select @s=isnull(@s+',','')+quotename(Name)
from syscolumns where ID=object_id('Class') and Name not in('Student')
order by Colid
exec('select Student,[Course],[Score] from Class unpivot ([Score] for [Course] in('+@s+'))b')

go
select
Student,[Course],[Score]
from
Class
unpivot
([Score] for [Course] in([數學],[物理],[英語],[語文]))b

生成格式:
/*
Student Course Score
------- ------- -----------
李四 數學 77
李四 物理 85
李四 英語 65
李四 語文 65
張三 數學 87
張三 物理 90
張三 英語 82
張三 語文 78

(8 行受影響)
*/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区久久久| 精品一区二区电影| 最近2019中文字幕一页二页| 久久精品男人天堂| 中文字幕欧美视频在线| 国产精品偷伦免费视频观看的| 亚洲最大的av网站| 色无极亚洲影院| 欧美xxxwww| 国产精品久久久av久久久| 欧美夫妻性生活xx| 欧美丝袜第一区| 欧美国产日韩在线| 久久男人的天堂| 2019最新中文字幕| 伊人成人开心激情综合网| 2019亚洲日韩新视频| 久久久精品久久久| 91大神在线播放精品| 亚洲中国色老太| 日韩在线观看电影| 亚洲精品网址在线观看| 亚洲日本中文字幕免费在线不卡| 最新69国产成人精品视频免费| 色综合91久久精品中文字幕| 成人www视频在线观看| 亚洲福利视频久久| 精品视频在线播放色网色视频| 久久久久久有精品国产| 日韩电影中文 亚洲精品乱码| 欧洲美女7788成人免费视频| 中文字幕久久精品| 欧美最猛性xxxxx(亚洲精品)| 亚洲精品成人久久久| 国产成人一区二区| 91亚洲国产成人久久精品网站| 国内精品久久久久影院优| 亚洲bt欧美bt日本bt| 97香蕉超级碰碰久久免费软件| 亚洲天堂av在线播放| 2021久久精品国产99国产精品| 91影视免费在线观看| 成人女保姆的销魂服务| 久久精品国产一区二区电影| 精品久久久一区| 国产精品美女www爽爽爽视频| 久久综合88中文色鬼| 国产一区二区成人| 秋霞午夜一区二区| 久色乳综合思思在线视频| www.99久久热国产日韩欧美.com| 国产日韩在线播放| 久久视频中文字幕| 国产999在线观看| 色老头一区二区三区在线观看| 在线播放日韩欧美| 亚洲精品在线不卡| 91久久精品久久国产性色也91| 97在线免费观看视频| 亚洲伊人成综合成人网| xxav国产精品美女主播| 亚洲欧美国内爽妇网| 久久免费精品日本久久中文字幕| 456亚洲影院| 国产精品老牛影院在线观看| 亚洲国产精品中文| 午夜精品久久久久久久99热浪潮| 亚洲综合国产精品| 亚洲免费福利视频| 欧美激情精品久久久久久蜜臀| 日韩电影中文字幕在线观看| 亚洲毛片在线观看.| 欧美一级黑人aaaaaaa做受| 亚洲欧美日韩一区二区三区在线| 亚洲欧美国产精品专区久久| 亚洲jizzjizz日本少妇| 亚洲高清一区二| 91精品一区二区| 国产精品1234| 国产亚洲欧美aaaa| 亚洲性视频网站| 欧美疯狂xxxx大交乱88av| 91综合免费在线| 国产91在线视频| 亚洲综合成人婷婷小说| 色综合亚洲精品激情狠狠| 日韩亚洲一区二区| 成人激情黄色网| 日韩精品免费一线在线观看| 成人伊人精品色xxxx视频| 国产精品黄色影片导航在线观看| 国产精品视频资源| 国产精品黄视频| 理论片在线不卡免费观看| 久久久久久国产精品三级玉女聊斋| 欧美中文在线字幕| 成人高清视频观看www| 欧美日韩在线视频首页| 91精品久久久久久久久久另类| 疯狂欧美牲乱大交777| 国产欧美日韩丝袜精品一区| 欧美激情一级二级| 国产精品自产拍在线观看| 中文字幕亚洲字幕| 91精品久久久久久久久| 在线视频亚洲欧美| 成人性教育视频在线观看| 2019中文字幕在线免费观看| 美日韩丰满少妇在线观看| 在线电影av不卡网址| 亚洲国产高清福利视频| 欧美中文字幕在线观看| 久久天天躁狠狠躁夜夜躁2014| 亚洲精品视频在线观看视频| 欧美成人免费视频| 一本色道久久88综合亚洲精品ⅰ| 精品国产一区二区三区久久狼5月| 68精品久久久久久欧美| 国产精品免费在线免费| 4444欧美成人kkkk| 91日本在线观看| 日本一区二区不卡| 国产精品久久久| 日韩av综合网站| 欧美整片在线观看| 午夜精品视频在线| 亚洲国产日韩欧美在线99| 国产精品av在线| 黄色成人在线播放| 91香蕉国产在线观看| 亚洲精品在线视频| 国产精品久久久久久久久久ktv| 日本韩国欧美精品大片卡二| 欧美专区日韩视频| 久热爱精品视频线路一| 91精品91久久久久久| 精品福利一区二区| 亚洲一级片在线看| 亚洲女同精品视频| 亚洲成人久久电影| 岛国视频午夜一区免费在线观看| 国产精品jizz在线观看麻豆| 日韩美女视频在线观看| 欧美精品精品精品精品免费| 久久久久免费视频| 亚洲最大福利视频网| 精品久久国产精品| 92国产精品视频| 亚洲一区二区三区成人在线视频精品| 色综合影院在线| 色婷婷久久一区二区| 成人免费直播live| 久久99亚洲精品| 久久久久一本一区二区青青蜜月| 欧美日韩午夜剧场| 亚洲第一区中文字幕| 亚洲欧美一区二区三区情侣bbw| 中文字幕在线视频日韩| 国产福利精品在线| 国产欧美精品在线播放| 久久在线视频在线| 亚洲男女自偷自拍图片另类| 日韩亚洲国产中文字幕| 国内久久久精品|