一天一句SQL 行列轉換

2022-07-26 12:27:11 字數 2421 閱讀 8854

向前輩學習,**

view code

1

ifobject_id('

tb') is

notnull

2drop

table

tb 3go4

5create

tabletb6

(7 姓名 varchar(20

),8 課程 varchar(20

),9 成績 int10)

1112

insert

into tb values('

張三','

語文',74)13

14insert

into tb values('

張三','

數學',83)15

16insert

into tb values('

張三','

物理',93)17

18insert

into tb values('

李四','

語文',74)19

20insert

into tb values('

李四','

數學',84)21

22insert

into tb values('

李四','

物理',94)23

24go

2526

27select*28

from

tb29

30go

姓名課程

分數---------- ---------- -----------

張三語文

74張三

數學83

張三物理

93李四

語文74

李四數學

84李四

物理94

1.sql server 2000靜態sql

view code

1

select

姓名,2

max(case

when 課程='語文

'then 成績 end

) 語文,

3max(case

when 課程='數學

'then 成績 end

) 數學,

4max(case

when 課程='物理

'then 成績 end

) 物理

5fromtb6

group

by 姓名

姓名語文

數學物理

---------- ----------- ----------- -----------

李四74          84          94

張三74          83          93

2.sql server 2000動態sql(沒怎麼看明白)

view code

1

--變數按sql語言順序賦值23

declare

@sql

varchar(800)4

set@sql='

select 姓名'5

select

@sql

=@sql+'

,max( case when 課程=

'''+課程+

'''then 成績 end) [

'+課程+']

'--引號使用的是兩個單引號

6from (select

distinct 課程 from tb)a --

同from tb group by課程,預設按課程名排序

7set

@sql

=@sql+'

from tb group by 姓名'8

exec(@sql)

view code

1

--使用isnull(),變數先確定動態部分23

declare

@sql

varchar(800)4

select

@sql

=isnull(@sql+'

,','')+

'max(case when 課程=

'''+課程+

'''then 成績 end) [

'+課程+']

'--isnull函式中的『,』是怎麼回事?不明白

5from (select

distinct 課程 from tb) a --

同from tb group by課程,預設按課程名排序

6set

@sql='

select 姓名,'+

@sql+'

from tb group by 姓名'7

exec(@sql)

編寫SQL注意事項 一天一句(一)

2012 07 31 每次寫完儲存過程或一些sql語句,老同事一眼就能看出問題所在,還是咱不認真造成的。今日記下以防後面範同樣的錯誤。1.定義新的資料列,確定其資料型別,以免程式中計算錯誤。建立總金額字段,cast sum a.iqty isnull a.dprice,0 as decimal 18...

編寫SQL注意事項 一天一句(二)

2012 08 01 case when end 在平時工作中,遇到客戶需要的資料資訊為兩個欄位的組合資訊,比如在表t red 中,有兩個欄位即 spec 規格 specunit 規格單位 但是規格有時候是空值,規格單位是有值的。這樣的情況,客戶要求的需求為,spec specunit 為乙個字段顯...

編寫SQL注意事項 一天一句(四)

union 和 union all 用法 union 操作符用於合併兩個或多個 select 語句的結果集。請注意,union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同。select c1,c2,c3 from t...