发布网友 发布时间:2022-04-27 01:31
共3个回答
热心网友 时间:2022-05-02 16:24
最下面有代码 ,改后的.拿去吧.
-----------------------------------------
如下:看着修改吧.
id sid course result
1 2005001 语文 80.0
2 2005001 数学 90.0
3 2005001 英语 80.0
4 2005002 语文 56.0
5 2005002 数学 69.0
6 2005002 英语 .0
declare @sql varchar(8000)
set @sql='select sid'
select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)'
from course order by id
set @sql=@sql+' from result group by sid order by sid'
print @sql
exec(@sql)
得出结果
sid 语文 数学 英语
2005001 80.0 90.0 80.0
2005002 56.0 69.0 .0
===============================================
CREATE TABLE [dbo].[stu](
[sid] [int] NULL,
[sname] [nvarchar](10) NULL,
[sex] [nvarchar](2) NULL
) ON [PRIMARY]
go
insert into stu values(1,'张三','男')
insert into stu values(2,'李四','男')
GO
CREATE TABLE [dbo].[km](
[kid] [int] NULL,
[kname] [varchar](50) NULL
) ON [PRIMARY]
go
insert into km values(1,'语文')
insert into km values(1,'数学')
insert into km values(1,'英语')
go
CREATE TABLE [dbo].[cj](
[sid] [int] NULL,
[sname] [varchar](50) NULL,
[score] [int] NULL,
[kid] [int] NULL
) ON [PRIMARY]
go
insert into cj values(1,1,60,1)
insert into cj values(2,1,70,2)
insert into cj values(3,1,80,3)
insert into cj values(1,2,65,1)
insert into cj values(2,2,69,2)
insert into cj values(3,2,80,3)
go
select stu.sid,stu.sname,
sum(case km.kname when '语文' then score else 0 end) '语文',
sum(case km.kname when '数学' then score else 0 end) '数学',
sum(case km.kname when '英语' then score else 0 end) '英语'
from cj left join stu on cj.sname=stu.sid
left join km on km.kid=cj.kid
group by stu.sid,stu.sname
/*
sid sname 语文 数学 英语
2 李四 60 68 77
1 张三 60 70 80
*/
热心网友 时间:2022-05-02 17:42
你这两个表里没有相同的字段,那么如果两个表一起查询的时候出现的记录太多了,你也用不了。如果你想查,那么SELECT * FROM A A,B B 就行了,但我觉得这应该不是你想要的,你最好把表结构改一下,在B表里加一字段,与A表能关联起来,比如ID,
SELECT * FROM A A,B B WHERE A.ID=B.ID
热心网友 时间:2022-05-02 19:16
yiuuyi