求一 SQL

aran11 2006-05-12 06:27:31
两个表a,b 结构如下:

表a:

日期 数量1 品种
2006/01/01 1 A
2006/01/01 2 B
2006/01/03 5 E
2006/01/03 2 E


表b:

日期 数量2 品种
2006/01/01 2 B
2006/01/01 4 C
2006/01/02 5 A


要求结果如下: 按数量大小进行排序

日期 数量1+数量2
2006/01/01 9
2006/01/03 7
2006/01/02 5

用了分组和外联接,order by sum(sum(nvl(数量1,0))+sum(nvl(数量2,0))) desc 时报错.
...全文
105 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aran11 2006-05-15
  • 打赏
  • 举报
回复
实际查询中还有C表、D表、E表,搞了一上午终于是跑顺了!
感谢sbaz,结帖!
aran11 2006-05-15
  • 打赏
  • 举报
回复
SQL> select A1,sum(A2) as cnt
2 from
3 (select A1,A2 from a
4 union all
5 select A1,A2 from b )
6 group by a1
7 order by cnt desc;

A1 CNT
----------- ----------
2006-1-1 9
2006-1-3 7
2006-1-2 5

aran11 2006-05-15
  • 打赏
  • 举报
回复
sbaz,是这样吗?

select 日期,sum(数量1) as cnt
from
(select 日期,数量1 form A
union all
select 日期,数量2 form B)
group by 日期
order by cnt desc;
aran11 2006-05-14
  • 打赏
  • 举报
回复
where a.日期=b.日期
这样不行,A表B表中 只要一个表 出现的日期就要加入统计结果.
超叔csdn 2006-05-14
  • 打赏
  • 举报
回复
是啊,他们都写的是错的。
select 日期,sum(数量1) as cnt
from
(select 日期,数量1
union all
select 日期,数量2)
group by 日期
order by cnt desc;

jasonduan1982 2006-05-13
  • 打赏
  • 举报
回复
select a.日期,sum(a.数量+b.数量)
from a,b
where a.日期=b.日期
group by a.日期
order by total desc;
goldarcher2005 2006-05-13
  • 打赏
  • 举报
回复
select t.日期,t.数量
(select a.日期,sum(a.数量1+b.数量2) 数量 from a,b where a.日期=b.日期 gruop by a.日期
) t
order by t.数量 desc
aran11 2006-05-12
  • 打赏
  • 举报
回复
是 Oracle 8.0.5

17,377

社区成员

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

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