SQL Server行列轉換

2021-10-17 09:29:43 字數 920 閱讀 2247

行列轉換應該非常廣泛,也就是常說的交叉表,範例如下:

--注意事項:資料庫相容性級別:sql server 2005 (90)

--建立臨時測試表

create table test (姓名 varchar(10),課程 varchar(10),分數 int)

insert into test values('張三','語文',74)

insert into test values('張三','數學',83)

insert into test values('張三','英語',93)

insert into test values('李四','語文',74)

insert into test values('李四','數學',84)

insert into test values('李四','英語',94)

goselect * from test

go--課程串合及行列轉換

declare @sql_title varchar(8000)

select @sql_title=isnull(@sql_title+',[','')+課程+']' from test group by 課程

set @sql_title='['+@sql_title

exec ('select * from test pivot(max(分數) for 課程 in ('+@sql_title+')) b')

--刪除臨時表

drop table test

轉換前:

轉換後:

SQL Server 行列轉換

報表顯示需求,查詢結果往往需要做一些行列轉換或列行轉換來顯示。就以這個例子的資料來源做演示。正常查詢結果顯示和執行結果,如下 下面演示,把 rid 和 dt 作為列顯示 view code select rid sum case when dt 2011 01 23 then hits end as...

SQL Server 行列轉換 2

參考前乙個例子現想使用另外一種方式來處理行列轉換,實現下面效果 產生唯一字段,稍後為迴圈使用 rid nvarchar 2 dt date,hits int 把需要處理的資料記錄預存入這個臨時表中 insert into dbo t select rid dt hits from dbo recor...

SQL Server 行列轉換 1

參考前乙個sql的行列轉換例子 覺得不夠自由,需要去預先知道記錄的內容去定義行或列。下面這個方法,是insus.net常用一種處理方案,為資料量較少而準備。比較長,基本上寫有說明,理解起來,一般不會有多大困難。如下 view code 由於原記錄表沒有乙個唯一主鍵,只好新建乙個臨時表,把需要處理的記...