向前輩學習,**
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...