1,首先創(chuàng)建數(shù)據(jù)表
創(chuàng)新互聯(lián)公司專注于龍湖企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城建設(shè)。龍湖網(wǎng)站建設(shè)公司,為龍湖等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
2,接著插入演示數(shù)據(jù)
3,需要把學(xué)生的每門(mén)成績(jī)集中到一行
4,編寫(xiě)PIVOT函數(shù)實(shí)現(xiàn)
5,運(yùn)行以后實(shí)現(xiàn)行轉(zhuǎn)列
6,最后還可以用case when來(lái)實(shí)現(xiàn)
select * from
(
select id as Name , Subject = 'id' , Result = id from tb1
union all
select id as Name , Subject = 'yytc' , Result = yytcfrom tb1
) t
order by name , case Subject when 'id' then 1 when 'yytc' then 2 end
沒(méi)有數(shù)據(jù)庫(kù),沒(méi)法給你測(cè)試,你用這個(gè)試試,看好不好使
如果不好使,可以訪問(wèn)這個(gè)地址:
里邊有行轉(zhuǎn)列,列轉(zhuǎn)行,應(yīng)該有你想要的,你看看
PIVOT 用于將列值旋轉(zhuǎn)為列名(即行轉(zhuǎn)列),在 SQL Server 2000可以用聚合函數(shù)配合CASE語(yǔ)句實(shí)現(xiàn)
PIVOT 的一般語(yǔ)法是:PIVOT(聚合函數(shù)(列) FOR 列 in (…) )AS P
注意:PIVOT、UNPIVOT是SQL Server 2005 的語(yǔ)法,使用需修改數(shù)據(jù)庫(kù)兼容級(jí)別(在數(shù)據(jù)庫(kù)屬性-選項(xiàng)-兼容級(jí)別改為 90 )
SQL2008 中可以直接使用
完整語(yǔ)法:
table_source
PIVOT(
聚合函數(shù)(value_column)
FOR pivot_column
IN(column_list)
)
View Code
UNPIVOT 用于將列明轉(zhuǎn)為列值(即列轉(zhuǎn)行),在SQL Server 2000可以用UNION來(lái)實(shí)現(xiàn)
完整語(yǔ)法:
table_source
UNPIVOT(
value_column
FOR pivot_column
IN(column_list)
)
sqlserver自帶得有一個(gè)stuff函數(shù),可以結(jié)合group by 和distinct使用,可以實(shí)現(xiàn)行變列
row_number() over(partition by id order by y) 這是個(gè)分析函數(shù),意思是以id分組,y排序,給每一行一個(gè)從1開(kāi)始的行號(hào),一般去重的時(shí)候用的比較多