一个SQL查询的问题

xxxyyyuuu 2009-10-24 05:00:25
有两个表。
t1:字段为 No,X,Y No为Key
t2:字段为 No,L1,L2 No为Key
现要查询输出:No,X,Y,Z
其中Z为 查询统计t2中的同一个No编号的(L2-L1)的累加值,即所有t1.No=t2.No情况下的SUM(L2-L1)

这个SQL该如何写?
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2009-10-24
  • 打赏
  • 举报
回复
同意楼上!
shiyiwan 2009-10-24
  • 打赏
  • 举报
回复
第一种是正确的,第二种会把no不在t2中的记录也查出来,sum(L2-L1)为null

select count(1) from (
select t1.* , (select sum(L2-L1) from t2 where t2.no = t1.no ) Z from t1
)
where z is null;

看看结果是不是1853 - 1581 = 272
xxxyyyuuu 2009-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
--1
select t1.* , sum(t2.L2-t2.L1) Z from t1 , t2 where t1.no = t2.no group by t1.no , t1.x , t1.y

--2
select t1.* , (select sum(L2-L1) from t2 where t2.no = t1.no ) Z from t1

[/Quote]

1。效率高,但在我的库里数据只有1581。
2。很慢,数据却有1853
dawugui 2009-10-24
  • 打赏
  • 举报
回复
--1
select t1.* , sum(t2.L2-t2.L1) Z from t1 , t2 where t1.no = t2.no group by t1.no , t1.x , t1.y

--2
select t1.* , (select sum(L2-L1) from t2 where t2.no = t1.no ) Z from t1

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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