SQL Server中的行列轉換

2021-08-22 10:13:01 字數 1593 閱讀 9740

行列轉換

老一點的寫法

create table sales1

( [year] int,

quarter char(2),

amount float

) go

insert into sales1 values (2001, 『q1』, 80)

insert into sales1 values (2001, 『q2』, 70)

insert into sales1 values (2001, 『q3』, 55)

insert into sales1 values (2001, 『q3』, 110)

insert into sales1 values (2001, 『q4』, 90)

insert into sales1 values (2002, 『q1』, 200)

insert into sales1 values (2002, 『q2』, 150)

insert into sales1 values (2002, 『q2』, 40)

insert into sales1 values (2002, 『q2』, 60)

insert into sales1 values (2002, 『q3』, 120)

insert into sales1 values (2002, 『q3』, 110)

insert into sales1 values (2002, 『q4』, 180)

insert into sales1 values (2002, 『q5』, 380)

goselect * from sales1

pivot

(sum (amount) –使用sum聚合數量列

for [quarter] –pivot quarter 列

in (q1, q2, q3, q4, q5)) –使用季節

as p

go新一點的寫法

declare @sales1 table

( [year] date,

quarter varchar(20),

amount varchar(5)

)insert

into @sales1 values ('2008-8-8', '拜仁', '勝')

,('2008-8-9', '奇才', '勝')

,('2008-8-9', '湖人', '勝')

,('2008-8-10', '拜仁', '負')

,('2008-8-8', '拜仁', '負')

,('2008-8-12', '奇才', '勝')

,('2008-8-12', '奇才', '平')

select * from @sales1

select * from @sales1

pivot

(count (year) --使用sum聚合數量列

for amount --pivot quarter 列

in (勝,負,平)) --使用季節

as p

SQL Server行列轉換

行列轉換應該非常廣泛,也就是常說的交叉表,範例如下 注意事項 資料庫相容性級別 sql server 2005 90 建立臨時測試表 create table test 姓名 varchar 10 課程 varchar 10 分數 int insert into test values 張三 語文 ...

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...