PIVOT 用于將列值旋轉為列名(即行轉列),在 SQL Server 2000可以用聚合函數(shù)配合CASE語句實現(xiàn)
成都創(chuàng)新互聯(lián)服務項目包括官渡網(wǎng)站建設、官渡網(wǎng)站制作、官渡網(wǎng)頁制作以及官渡網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,官渡網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到官渡省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
PIVOT 的一般語法是:PIVOT(聚合函數(shù)(列) FOR 列 in (…) )AS P
注意:PIVOT、UNPIVOT是SQL Server 2005 的語法,使用需修改數(shù)據(jù)庫兼容級別(在數(shù)據(jù)庫屬性-選項-兼容級別改為 90 )
SQL2008 中可以直接使用
完整語法:
table_source
PIVOT(
聚合函數(shù)(value_column)
FOR pivot_column
IN(column_list)
)
View Code
UNPIVOT 用于將列明轉為列值(即列轉行),在SQL Server 2000可以用UNION來實現(xiàn)
完整語法:
table_source
UNPIVOT(
value_column
FOR pivot_column
IN(column_list)
)
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
沒有數(shù)據(jù)庫,沒法給你測試,你用這個試試,看好不好使
如果不好使,可以訪問這個地址:
里邊有行轉列,列轉行,應該有你想要的,你看看
1,首先創(chuàng)建數(shù)據(jù)表
2,接著插入演示數(shù)據(jù)
3,需要把學生的每門成績集中到一行
4,編寫PIVOT函數(shù)實現(xiàn)
5,運行以后實現(xiàn)行轉列
6,最后還可以用case when來實現(xiàn)
sqlserver自帶得有一個stuff函數(shù),可以結合group by 和distinct使用,可以實現(xiàn)行變列
編寫一個函數(shù)
create func sum_value(@kid int)
returns varchar(1000)
as
begin
declare @s varchar(1000)
set @s= ' '
select @s+=value+‘,’ from tb where kid=@kid
return @s
end
然后調用
select Kid,sum_value(Kid) from tb group by Kid
標題名稱:sqlserver行換列,sqlserver 行列轉置
網(wǎng)頁網(wǎng)址:http://chinadenli.net/article4/dsisooe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、定制網(wǎng)站、品牌網(wǎng)站制作、、外貿建站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)