好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > sqlserver 行列互轉實現小結

sqlserver 行列互轉實現小結

熱門標簽:電銷外呼有錄音系統有哪些 鎮江網路外呼系統供應商 百度地圖標注改顏色 臨沂智能電銷機器人加盟哪家好 貴州房產智能外呼系統供應商 外呼運營商線路收費 小e電話機器人 申請400電話在哪辦理流程 一個導航軟件能用幾個地圖標注點
復制代碼 代碼如下:

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

整理人:中國風(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 行受影響)
*/

您可能感興趣的文章:
  • SQL Server將一列的多行內容拼接成一行的實現方法
  • SQLServer行轉列實現思路記錄
  • Sql Server 2000 行轉列的實現(橫排)
  • sqlserver2005 行列轉換實現方法
  • sqlserver下將數據庫記錄的列記錄轉換成行記錄的方法
  • SQLServer行列互轉實現思路(聚合函數)
  • SQL Server行轉列的方法解析
  • SQL Server基礎之行數據轉換為列數據

標簽:三明 保定 晉城 日照 合肥 延邊 澳門 嘉興

巨人網絡通訊聲明:本文標題《sqlserver 行列互轉實現小結》,本文關鍵詞  sqlserver,行列,互轉,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sqlserver 行列互轉實現小結》相關的同類信息!
  • 本頁收集關于sqlserver 行列互轉實現小結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 好吊妞国产欧美日韩一区二区三区| 小东西我的舌头厉害吗| 被强迫露出两个奶头给男生吃| 99国产精品欲AV????天美| 国产99久张津瑜在线观看| 成人性生交大免费看| 727tⅤ精品国产亚洲AV成人| 四虎影院视频| 丰满欧美放荡少妇在线| 永久免费一区二区三区| 欧美xxav在线| furry巨大粗爽gay黄网址| 秋霞AV亚洲一区二区三| gvchina直男迷系列| 婷婷97狠狠成人网站| 日日草天天干| 性在线| 欧美一区二区三区无码大象视频| 巨大黑人XXXXXXXXXHD| 跑男h文| 国产a国产片| 男男顶撞喘嗯啊H小男生动漫| 欧美一级特黄A片免费观看密森| 在线小毛片| 日本伦理片在线播放| 国产A三级三级三级视该频| 成人A片产无码免费视频奶头麻豆 少妇被躁到高潮无码A片游戏 | 嫖老女人国产国语| 韩国污动漫无遮掩无删减电脑版 | 午夜黄色福利视频| 《美味人妻》HD| 6080yy三级手机理论在线| 平野紫耀| 国产黄拍| 亚洲 国产 日韩 在线 一区| 国产精品久久久久久久日日| 国产精品女上位在线观看| 内衣办公室动漫免费观看| 好湿?好紧?太爽了三级 | 三人弄娇妻高潮3p| 台湾一级毛片高清免费观看视频|