sql与子查询问题

时间:2012-03-06 19:14:10

标签: sql

我有以下查询:

    SELECT  PROGID1 = P.Prog, ENTERDATE1 = MAX(ENTERDATE), 
    BANKID = (select B.BANKID from BANK B
              WHERE B.ID = PROGID1 and B.ENTERDATE = ENTERDATE1 
             )  
   FROM PROTOCOL P JOIN BANK B ON P.ID = B.ID 
   group by P.ID  

我需要做的是获得给定MAX(ENTERDATE)的BANKID,但由于BANKID有重复记录,我需要根据MAX ENTERDATE找到它 是。我尝试执行以下操作,但是我收到一条消息,指出无效的列名PROGID1和ENTERDATE1:

    (select B.BANKID from BANK B
     WHERE B.ID = PROGID1 and B.ENTERDATE = ENTERDATE1 
              )  

2 个答案:

答案 0 :(得分:0)

这样的东西?即,使用“协议”查询作为表格。

SELECT b.bank_id
  FROM bank b
     , ( SELECT id AS progid1, MAX(enterdate) AS enterdate1
           FROM protocol
          GROUP BY prog
       ) p
 WHERE b.id = p.progid1
   AND b.enterdate = p.enterdate1

P.S。我认为你使用了“p.prog”,你的意思是p.id。

答案 1 :(得分:0)

我假设EnterDateBank表中的一列,因为这是您指示的具有多个记录的列...

SELECT
    p.Prog,
    b.EnterDate
    b.BankID
FROM
    Protocol p JOIN 
    Bank b ON b.ID = p.ID AND b.EnterDate = (
        SELECT MAX(b2.EnterDate) AS MaxEnterDate
        FROM Bank b2
        WHERE b2.ID = p.ID
    )