我有以下查询:
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
)
答案 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)
我假设EnterDate
是Bank
表中的一列,因为这是您指示的具有多个记录的列...
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
)