一、行轉列
1、建立**
ifobject_id
('tb')is
notnull
drop
tabletb
go create
tabletb(
姓名varchar
(10),
課程varchar
(10),
分數int
)insert
intotbvalues('
張三','
語文',74)
insert
intotbvalues('
張三','
數學',83)
insert
intotbvalues('
張三','
物理',93)
insert
intotbvalues('
李四','
語文',74)
insert
intotbvalues('
李四','
數學',84)
insert
intotbvalues('
李四','
物理',94)
go select
*fromtb
go 姓名
課程分數
---------- ---------- -----------
張三語文
74 張三
數學83
張三物理
93 李四
語文74
李四數學
84 李四
物理94 2
、使用sql server 2000靜態sql
--c select姓名,
max(case
課程when'語文
'then
分數else0end)語文,
max(case
課程when'數學
'then
分數else0end)數學,
max(case
課程when'物理
'then
分數else0end)
物理 from
tb group
by姓名
姓名語文
數學物理
---------- ----------- ----------- -----------
李四74 84 94
張三74 83 93
二、列轉行
1、建立**
ifobject_id
('tb')is
notnull
drop
tabletb
go create
tabletb(
姓名varchar
(10),
語文int,數學
int,
物理int
)insert
intotbvalues('
張三',74,83,93)
insert
intotbvalues('
李四',74,84,94)
go select
*fromtb
go姓名
語文數學
物理 ---------- ----------- ----------- -----------
張三74 83 93
李四74 84 94
2、使用sql server 2000靜態sql
--sql server 2000
靜態sql
。select
*from
( select姓名,
課程='語文
',分數=語文
fromtb
unionall
select姓名,
課程='數學
',分數=數學
fromtb
unionall
select姓名,
課程='物理
',分數=物理
fromtb
) t order
by姓名
,case
課程when'語文
'then1when'數學
'then2when'物理
'then3end
姓名課程
分數 ---------- ---- -----------
李四語文
74 李四
數學84
李四物理
94 張三
語文74
張三數學
83 張三
物理93
SQL(行列互換)
有乙個sql題在面試中出現的概率極高,最近有學生出去面試仍然會遇到這樣的題目,在這裡跟大家分享一下。題目 資料庫中有一張如下所示的表,表名為sales。年 季度銷售量 1991111 1991212 1991313 1991414 1992121 1992222 1992323 1992424 要求...
SQL行列互換
有乙個sql題在面試中出現的概率極高,在這裡跟大家分享一下。題目 資料庫中有一張如下所示的表,表名為sales。年 季度銷售量 1991111 1991212 1991313 1991414 1992121 1992222 1992323 1992424 要求 寫乙個sql語句查詢出如下所示的結果。...
SQL行列互換
題目 資料庫中有一張如下所示的表,表名為sales。年 季度銷售量 1991111 1991212 1991313 1991414 1992121 1992222 1992323 1992424 要求 寫乙個sql語句查詢出如下所示的結果。年 一季度二季度 三季度四季度 1991 1112 1314...