SQL 行列互換

2022-02-19 14:46:13 字數 2401 閱讀 8032

一、行轉列

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