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

sqlserver 行列互轉(zhuǎn)實(shí)現(xiàn)小結(jié)

 更新時(shí)間:2010年04月12日 01:48:33   作者:  
列轉(zhuǎn)行比較經(jīng)典,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:

--行列互轉(zhuǎn)
/******************************************************************************************************************************************************
以學(xué)生成績(jī)?yōu)槔?,比較形象易懂

整理人:中國(guó)風(fēng)(Roy)

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

--1、行互列
--> --> (Roy)生成測(cè)試數(shù)據(jù)

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'語(yǔ)文',78 union all
select N'張三',N'數(shù)學(xué)',87 union all
select N'張三',N'英語(yǔ)',82 union all
select N'張三',N'物理',90 union all
select N'李四',N'語(yǔ)文',65 union all
select N'李四',N'數(shù)學(xué)',77 union all
select N'李四',N'英語(yǔ)',65 union all
select N'李四',N'物理',85
Go
--2000方法:
動(dòng)態(tài):

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]')


生成靜態(tài):

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

GO
動(dòng)態(tài):

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')

生成靜態(tài):
select *
from
Class
pivot
(max([Score]) for [Course] in([數(shù)學(xué)],[物理],[英語(yǔ)],[語(yǔ)文]))b

生成格式:
/*
Student 數(shù)學(xué) 物理 英語(yǔ) 語(yǔ)文
------- ----------- ----------- ----------- -----------
李四 77 85 65 65
張三 87 90 82 78

(2 行受影響)
*/

------------------------------------------------------------------------------------------
go
--加上總成績(jī)(學(xué)科平均分)

--2000方法:
動(dòng)態(tài):

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+',[總成績(jī)]=sum([Score]) from Class group by [Student]')--加多一列(學(xué)科平均分用avg([Score]))

生成動(dòng)態(tài):

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

go

--2005方法:

動(dòng)態(tài):

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

生成靜態(tài):

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

生成格式:

/*
Student 數(shù)學(xué) 物理 英語(yǔ) 語(yǔ)文 總成績(jī)
------- ----------- ----------- ----------- ----------- -----------
李四 77 85 65 65 292
張三 87 90 82 78 337

(2 行受影響)
*/

go

--2、列轉(zhuǎn)行
--> --> (Roy)生成測(cè)試數(shù)據(jù)

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

--2000:

動(dòng)態(tài):

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

生成靜態(tài):
select *
from (select [Student],[Course]='數(shù)學(xué)',[Score]=[數(shù)學(xué)] from Class union all
select [Student],[Course]='物理',[Score]=[物理] from Class union all
select [Student],[Course]='英語(yǔ)',[Score]=[英語(yǔ)] from Class union all
select [Student],[Course]='語(yǔ)文',[Score]=[語(yǔ)文] from Class)t
order by [Student],[Course]

go
--2005:

動(dòng)態(tài):

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([數(shù)學(xué)],[物理],[英語(yǔ)],[語(yǔ)文]))b

生成格式:
/*
Student Course Score
------- ------- -----------
李四 數(shù)學(xué) 77
李四 物理 85
李四 英語(yǔ) 65
李四 語(yǔ)文 65
張三 數(shù)學(xué) 87
張三 物理 90
張三 英語(yǔ) 82
張三 語(yǔ)文 78

(8 行受影響)
*/

相關(guān)文章

最新評(píng)論

巴马| 会东县| 察隅县| 明溪县| 广南县| 贞丰县| 恩平市| 民权县| 平乐县| 崇义县| 寿宁县| 连平县| 依安县| 拜泉县| 教育| 吐鲁番市| 拜城县| 元氏县| 闻喜县| 凤冈县| 芦溪县| 银川市| 舞钢市| 平乡县| 武穴市| 额尔古纳市| 泸西县| 新沂市| 江津市| 敖汉旗| 六盘水市| 徐闻县| 手游| 酉阳| 九江市| 平凉市| 南和县| 辰溪县| 阿图什市| 穆棱市| 商洛市|