1.建立 學生成績表
2.填充 部分資料
3.一般的直接查詢
4.sql 2000 下 行列轉換
5.sql 2005 下 pivot
------------
/*--建立 學生成績表
create table [stusources] (
[stuid] [char] (10) collate chinese_prc_ci_as not null ,
[stuname] [char] (10) collate chinese_prc_ci_as not null ,
[kecheng] [char] (10) collate chinese_prc_ci_as not null ,
[chengji] [float] not null
) on [primary]
/*--填充 部分資料
insert into stusources
select '001','張三','語文',81
union select '001','張三','數學',71
union select '001','張三','歷史',71
union select '002','李四','語文',82
union select '002','李四','數學',72
union select '002','李四','歷史',72
/*-- 一般的直接查詢
select * from stusources
-- 結果
stuid stuname kecheng chengji
001 張三 歷史 71.0
001 張三 數學 71.0
001 張三 語文 81.0
002 李四 歷史 72.0
002 李四 數學 72.0
002 李四 語文 82.0
/*-- sql 2000 下 行列轉換
select stuname,
'語文' = sum(case kecheng when '語文' then chengji else 0 end ) ,
'數學' = sum(case kecheng when '數學' then chengji else 0 end ),
'歷史' = sum(case kecheng when '歷史' then chengji else 0 end )
from stusources
group by stuname
-- 結果
stuname 語文 數學 歷史
李四 82.0 72.0 72.0
張三 81.0 71.0 71.0
/* -- sql 2005 下 pivot
select stuname,[語文] as '語文',
[數學] as '數學',[歷史] as '歷史'
from stusources s
pivot (sum (chengji) for kecheng in ([語文],[數學],[歷史]) )as pvt
*/最近在做資料包表方面的工作,偶爾使用了資料表行列資料轉換的方法。上面的示例是經過驗證的,可以正常使用。
SQL2005資料庫行列轉換
注意 列轉行的方法可能是我獨創的了,呵呵,因為在網上找不到哦,全部是我自己寫的,用到了系統的syscolumns 一 行轉列的方法 先說說行轉列的方法,這個就比較好想了,利用拼sql和case when解決即可 實現目的 name nvarchar 10 null,名稱 course nvarcha...
MSSQL加密資料表 sql2005
建立資料庫主秘鑰 use adb go create master key encryption by password p8ssw0rd go 建立存放加密資料的表 create table dbo.sectable id int identity primary key,data nvarcha...
玩轉 SQL2005資料庫行列轉換
注意 列轉行的方法可能是我獨創的了,呵呵,因為在網上找不到哦,全部是我自己寫的,用到了系統的syscolumns 一 行轉列的方法 先說說行轉列的方法,這個就比較好想了,利用拼sql和case when解決即可 實現目的 1 建立測試用的資料庫 複製 如下 create table rowtest ...