首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求牛人的一句简略的sql

2012-12-19 
求牛人的一句简单的sql2张表:Astructure: REC_NO,AID,.......currentdata:1000,aaa,Bstructure: REC_NO,A_

求牛人的一句简单的sql
2张表:
A
structure: REC_NO,AID,.......
currentdata:1000  ,aaa,
B
structure: REC_NO,A_REC_NO,BID,DATE,.......
currentdata:2000  ,1000    ,bbb,10/10/2012,.....
           :2001  ,1000    ,ccc,11/10/2012,.....
           :2002  ,5000    ,ddd,15/10/2012,.....

关系 A.REC_NO=B.A_REC_NO
求 一条sql 输出结果集 A.AID,B.BID,其中B.BID是B.DATE 倒序第一条,其他的BID不要。
就这么简单 求高人了


[最优解释]


select a.aid,b3.bid
  from a,
       (select b1.a_rec_no,b1.bid
          from b b1
         where not exists (select 1
                  from b b2
                 where b1.a_rec_no = b2.a_rec_no
                   and b2.DATE > b1.DATE)) b3
 where a.rec_no = b3.a_rec_no


字段名最好不要用date,date是日期类型。。
[其他解释]
WITH table1 AS

     SELECT '1000' AS REC_NO, 'aaa' AS AID FROM dual
),
table2 AS

     SELECT '2000' AS REC_NO, '1000' AS A_REC_NO,'bbb' AS BID,'10/10/2012' AS DD FROM dual
     union all
     SELECT '2001' AS REC_NO, '1000' AS A_REC_NO,'ccc' AS BID,'11/10/2012' AS DD FROM dual
     union all
     SELECT '2002' AS REC_NO, '5000' AS A_REC_NO,'ddd' AS BID,'15/10/2012' AS DD FROM dual
)
SELECT AID,BID FROM(
SELECT * FROM TABLE2 T2 INNER JOIN TABLE1 T1 ON T2.A_REC_NO = T1.REC_NO  ORDER BY DD DESC) WHERE ROWNUM = 1

[其他解释]
引用:
SQL code1234567891011121314WITH table1 AS(      SELECT '1000' AS REC_NO, 'aaa' AS AID FROM dual),table2 AS(      SELECT '2000' AS REC_NO, '1000' AS A_REC_NO,'bbb' AS BID,'10/10/2012' AS D……

感谢回复 ,可是可能误解我意思了
这是我根据你代码修改的
WITH table1 AS

     SELECT '1000' AS REC_NO, 'aaa' AS AID FROM dual
     union all
     SELECT '1001' AS REC_NO, 'yyy' AS AID FROM dual
),
table2 AS

     SELECT '2000' AS REC_NO, '1000' AS A_REC_NO,'bbb' AS BID,'10/10/2012' AS DD FROM dual


     union all
     SELECT '2001' AS REC_NO, '1000' AS A_REC_NO,'ccc' AS BID,'11/10/2012' AS DD FROM dual
     union all
     SELECT '2002' AS REC_NO, '1001' AS A_REC_NO,'ddd' AS BID,'15/10/2012' AS DD FROM dual
      union all
     SELECT '2003' AS REC_NO, '1001' AS A_REC_NO,'xxx' AS BID,'15/10/2012' AS DD FROM dual
)
SELECT AID,BID FROM(
SELECT * FROM TABLE2 T2 INNER JOIN TABLE1 T1 ON T2.A_REC_NO = T1.REC_NO  ORDER BY DD DESC) WHERE ROWNUM = 1


[其他解释]
引用:
SQL code12345678910select a.aid,b3.bid  from a,       (select b1.a_rec_no,b1.bid          from b b1         where not exists (select 1                  from b b2                 where b1.……

牛B啊虽然我还没有仔细看里面的结构,不过数据修改了几次与预想的是一致。
虽然现在什么也做不了,唯一的只有膜拜了
[其他解释]
不好意思。我没看全。
SELECT AID, BID
  FROM (SELECT ROW_NUMBER() OVER(PARTITION BY A_REC_NO ORDER BY DD DESC) AS RN,
               T1.AID,
               T2.A_REC_NO,
               T2.BID
          FROM TABLE2 T2
         INNER JOIN TABLE1 T1 ON T2.A_REC_NO = T1.REC_NO
         ORDER BY DD DESC)
 WHERE RN = 1 ORDER BY A_REC_NO

这样的结果?
1aaaccc
2yyyddd

热点排行