求高手幫寫一條SQL語句

2022-11-29 00:50:59 字數 1818 閱讀 3771

1樓:

/*問題:假設有張學生成績表(tb)如下:

姓名 課程 分數

張三 語文 74

張三 數學 83

張三 物理 93

李四 語文 74

李四 數學 84

李四 物理 94

想變成(得到如下結果):

姓名 語文 數學 物理

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

李四 74 84 94

張三 74 83 93

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

*/create table tb(姓名 varchar(10) , 課程 varchar(10) , 分數 int)

insert into tb values('張三' , '語文' , 74)

insert into tb values('張三' , '數學' , 83)

insert into tb values('張三' , '物理' , 93)

insert into tb values('李四' , '語文' , 74)

insert into tb values('李四' , '數學' , 84)

insert into tb values('李四' , '物理' , 94)

go--sql server 2000 靜態sql,指課程只有語文、數學、物理這三門課程。(以下同)

select 姓名 as 姓名 ,

max(case 課程 when '語文' then 分數 else 0 end) 語文,

max(case 課程 when '數學' then 分數 else 0 end) 數學,

max(case 課程 when '物理' then 分數 else 0 end) 物理

from tb

group by 姓名

--sql server 2000 動態sql,指課程不止語文、數學、物理這三門課程。(以下同)

declare @sql varchar(8000)

set @sql = 'select 姓名 '

select @sql = @sql + ' , max(case 課程 when ''' + 課程 + ''' then 分數 else 0 end) [' + 課程 + ']'

from (select distinct 課程 from tb) as a

set @sql = @sql + ' from tb group by 姓名'

exec(@sql)

--sql server 2005 靜態sql。

select * from (select * from tb) a pivot (max(分數) for 課程 in (語文,數學,物理)) b

--sql server 2005 動態sql。

declare @sql varchar(8000)

select @sql = isnull(@sql + '],[' , '') + 課程 from tb group by 課程

set @sql = '[' + @sql + ']'

exec ('select * from (select * from tb) a pivot (max(分數) for 課程 in (' + @sql + ')) b')

2樓:匿名使用者

你這個 row2裡面的值都是確定的嗎 就a,b,c,aa,bb?hi我

3樓:匿名使用者

sql行轉列

跪求一條SQL語句

學生表 member 欄位名稱 資料型別 說明 mid char 10 學生號,主鍵 mname char 50 姓名 課程表class 欄位名稱 資料型別 說明 fid char 10 課程,主鍵 fname char 50 課程名 成績表 score 欄位名稱 資料型別 說明 sid int 自...

請幫我寫一條SQL查詢語句,要求是 檢索選修了至少小明選的課

就是檢索這樣的一個學生,不存在該學生學的課程小明沒選修的 或者不存在小明學的課程該生沒學的 select distinct sno from sc as a where not exists select from s,sc as b where s.sname 小明 and b.sno s.sno...

求sql語句,高手進

sql語句 查詢語句 select from table select from table where 條件1 數值 and 條件2 數值 select from table where id in select id from table 兩表關聯 select a.a,b.b,c.c from...