一个简单的查询,求高手指点!

七色鸟 2012-04-05 05:11:20


--DROP TABLE A
CREATE TABLE A
(
id int primary key identity(1,1),
score decimal(18,2)
)

--DROP TABLE B
CREATE TABLE B
(
id int primary key identity(1,1),
pid int , --A表的ID
math decimal(18,2),
english decimal(18,2)
)

SELECT * FROM A
INSERT INTO A
VALUES(50)

SELECT * FROM B
INSERT INTO B
VALUES(1,5,5)
INSERT INTO B
VALUES(1,5,5)
INSERT INTO B
VALUES(1,15,15)

--想获得子表中math总分
想获得SQL语句取得以下结果


id score math
----------- ---------------------------------------
1 50.00 ?

...全文
134 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
七色鸟 2012-04-06
  • 打赏
  • 举报
回复
8楼厉害, 我知道有这么一种写法,一下子想不起来了。膜拜。。。

等结贴了,分多给你点。

select
a.ID,a.score,
isnull((select sum(math) FROM B WHERE pid=a.ID),0) as math
from A
中国风 2012-04-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

果真都是高手,多谢。都使用了Group By!
能不能挑战一下,不使用Group By.
[/Quote]


select
a.ID,a.score,
isnull((select sum(math) FROM B WHERE pid=a.ID),0) as math
from A


当B表不存在对应记录时显示为0
七色鸟 2012-04-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

楼主烧糊涂了,开始胡说八道了
[/Quote]
呵呵,我也知道哦,是有点无耻。
七色鸟 2012-04-05
  • 打赏
  • 举报
回复

group by a.ID,a.score ,实际应用的时候字段很多。挺麻烦,连了好几张表。
prcak47 2012-04-05
  • 打赏
  • 举报
回复
楼主烧糊涂了,开始胡说八道了
七色鸟 2012-04-05
  • 打赏
  • 举报
回复
果真都是高手,多谢。都使用了Group By!
能不能挑战一下,不使用Group By.
中国风 2012-04-05
  • 打赏
  • 举报
回复
select 
a.ID,a.score,
sum(math) as math
from A
inner join B on a.id=b.pid
group by a.ID,a.score
jwdream2008 2012-04-05
  • 打赏
  • 举报
回复
select A.ID,A.Score,SUM(math)as math  from A inner Join B on A.id=B.pid group by A.id,A.score
prcak47 2012-04-05
  • 打赏
  • 举报
回复

select #a.id,#a.score,SUM(#b.math) as math
from #A,#B
where #A.id = #B.pid
group by #A.id,#A.score

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧