跪求一條SQL語句

2023-01-30 16:20:44 字數 2546 閱讀 7073

1樓:我tm不管

/*學生表:member

欄位名稱 資料型別 說明

mid char(10) 學生號,主鍵

mname char(50) 姓名

課程表class:

欄位名稱 資料型別 說明

fid char(10) 課程,主鍵

fname char(50) 課程名

成績表:score

欄位名稱 資料型別 說明

sid int 自動編號,主鍵,成績記錄號

fid char(10) 課程號,外來鍵

mid char(10) 學生號,外來鍵

score int 成績*/

create table member(mid varchar(10) primary key,mname varchar(50))

create table class(fid varchar(10) primary key,fname varchar(50))

create table score(sid int primary key,fid varchar(10),mid varchar(10),score int)

goinsert into member values ('1001','張三')

insert into member values ('1002','李四')

insert into class values ('a1','數學')

insert into class values ('a2','化學')

insert into class values ('a3','政治')

insert into class values ('a4','歷史')

insert into class values ('a5','語文')

insert into class values ('a6','物理')

insert into score values (1,'a1','1001',80)

insert into score values (2,'a1','1002',85)

insert into score values (3,'a2','1001',84)

insert into score values (4,'a4','1002',90)

godeclare @sql varchar(8000)

select @sql='select a.mname as 學生姓名'

select @sql=@sql+',sum(case c.fname when '''+fname+''' then b.score else null end )as '+fname from class

select @sql=@sql+' from member a left join score b on a.mid=b.mid left join class c on b.

fid=c.fid group by a.mname'

print @sql

exec (@sql)

這是我以前給他們寫的行轉列的**,和你這個基本一樣,你看看稍微一改就能用了,這個是個動態的sql語句拼起來的,如果你的資料庫是sqlserver的話就可以了

2樓:

select 姓名,max(語文) as 語文,max(數學) as 數學,max(英語) as 英語

from (select a.name as 姓名,

case when b.scoretypeid=1 then b.score end as 語文,

case when b.scoretypeid=2 then b.score end as 數學,

case when b.scoretypeid=3 then b.score end as 英語

from student a,score b where a.id=b.studentid ) c group by 姓名

ok 有測試

3樓:匿名使用者

select s.name,

sum(case t.id when 1 then c.score else 0 end) as '語文',

sum(case t.id when 3 then c.score else 0 end) as '英語'

from student s,score c,scoretype t where s.id = c.sid and c.

tid = t.id and t.attr = 1 group by s.

name;

4樓:匿名使用者

select st.name,sct.scorename from student st left join score sc on sc.studentid = st.id

left join scoretype sct on sct.id = sc.scoretypeid where sct.attr = 1;

有什麼問題在問吧

5樓:楠楠哥萌萌噠

關注下 1樓應該可以

求高手幫寫一條SQL語句

問題 假設有張學生成績表 tb 如下 姓名 課程 分數 張三 語文 74 張三 數學 83 張三 物理 93 李四 語文 74 李四 數學 84 李四 物理 94 想變成 得到如下結果 姓名 語文 數學 物理 李四 74 84 94 張三 74 83 93 create table tb 姓名 va...

如何使用一條sql語句,插入多條記錄

insert 表名 列名,列名 select 值1,值2 union select 值1,值2 union select 值1,值2 如何用sql語句向一個表中插入多行記錄 insert一般是用來給表插入一條指定的列值的,但是,insert還存在另一種形式,可以利用它將一條select語句的結果插入...

請幫我寫一條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...