Group By,Distinct给搞晕了,之Oracle的一个查询问题!!

BoBo_32 2007-05-18 07:47:01
表A:
id goodsid price date
1 1001 20 2002-01-01
2 1001 30 2003-01-01
3 1001 50 2004-01-01
4 1002 15 2002-05-05
5 1002 22 2003-05-08
6 1003 5 2004-05-08
7 1003 10 2006-05-02
8 1004 11 2008-08-04
........................

表B:
goodsid goodsname
1001 A
1002 B
1003 C
1004 D
1005 E
...............

要经过查询得到:
goodsid goodsname price date
1001 A 50 2004-01-01
1002 B 22 2003-05-08
1003 C 10 2006-05-02
1004 D 11 2008-08-04

要求goodsid的价格是最近更新的!!





...全文
492 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BoBo_32 2007-05-21
  • 打赏
  • 举报
回复
早晨脑袋清醒,一下就搞定了,不过还是要谢谢上面的朋友帮忙,呵呵!
hrubber 2007-05-20
  • 打赏
  • 举报
回复
select *
from A join (select goodsid,price,max(date) as date from B group by goodsid,price)
using (goodsid);
HelloWorld_001 2007-05-19
  • 打赏
  • 举报
回复
select B.goodsid,B.goodsname,c.price,c.date from (select b.*
from (select goodsid,max(date) as date from A group by goodsid) a,A b
where a.goodsid=b.goodsid and a.date=b.date ) c,B
where c.goodsid=B.goodsid
DragonBill 2007-05-18
  • 打赏
  • 举报
回复
SELECT B.goodsid, goodsname, price, date
FROM
(
SELECT goodsid, pric,
ROW_NUMBER() OVER(PARTITION BY goodsid ORDER BY date desc) AS RNUM
FROM A
) AA
INNER JOIN B on AA.goodsid = B.goodsid
WHERE AA.RNUM = 1

用啥Group By呀

17,377

社区成员

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

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