执行以下脚本可以在数据库中产生需要的表
Code
Create database test
Go
Use test
go
create table student
(
studid int not null,
studname varchar(10) not null
)
go
insert into student values(1,'张三')
insert into student values(2,'李四')
create table kemu
(
Kmid int not null,
Kmname varchar(10) NOT NULL
)
go
Insert into kemu values(1, ‘语文’)
Insert into kemu values(2,’数学’)
create table chengji
(
cjid int not null,
studid int not null,
kemuid int not null,
cj int not null
)
go
insert into chengji values(1,1,1,90)
insert into chengji values(2,1,2,95)
insert into chengji values(3,2,1,88)
insert into chengji values(4,2,2,94)
请实现如下效果:
姓名,语文成绩,数学成绩的查询语句
如:
姓名 语文 数学
张三 90 95
李四 XX XX
参考了一下网上的资料,自己写得代码如下:
Code
select
stud.studname as 姓名,
max(case km.kmname when '语文'then cjt.cj else 0 end) as 语文,
max(case km.kmname when '数学' then cjt.cj else 0 end) as 数学
from
chengji cjt
inner join student stud on cjt.studid=stud.studid
inner join kemu km on cjt.kemuid=km.kmid group by stud.studname order by stud.studname desc
有一点不懂
max(case km.kmname when '语文'then cjt.cj else 0 end) as 语文,
max(case km.kmname when '数学' then cjt.cj else 0 end) as 数学
是什么意思!为什么要用MAX呢请高手解答一下,谢谢!
有没有更好的解决方法?
另,有没有高级查询这方面的教程呢,因为感觉电子书上讲得很简单,但有几个高手告诉我,将这一些基本的语句用熟就可以达到了,不知道是不是真的...