加入两个表,只获取发行者发布日期最长的记录

时间:2013-10-04 10:06:36

标签: sql-server-2008

需要帮助才能获得不同的记录:

排名表

posid   |    issuerid
----------------------

其他表格

OtherID    |  issuerid   |   issue_date 
--------------------------------------

我想要

OtherID    |  issuerid   |   Posid
--------------------------------------

对于某些发行人,Issue_date可能为null。 我想要那些其他id,issuer id和posid,如果发行人有任何其他空的话,发行日期是最大的

3 个答案:

答案 0 :(得分:0)

SELECT otherId, issuerId, posId
FROM (
    SELECT issuerId, MAX(ISNULL(issueDate,'17530101')) maxDate
    FROM otherTable
    GROUP BY issuerId
    ) M
JOIN otherTable O ON O.issuerId = M.issuerId AND O.issueDate = M.maxDate
JOIN positionTable P ON P.issuerId = M.issuerId

根据MS,日期01/01/1753是SQL 2008日期时间字段中的最小值。您可以使用任何当然值,只要它小于表中的最小值。

答案 1 :(得分:0)

SELECT OT.OtherID,PT.issuerid,PT.posid FROM [Position table] PT INNER JOIN [Other Table] OT ON PT.issuerid=OT.issuerid WHERE OT.issue_date IN
(SELECT MAX(issue_date) FROM [Other Table])

答案 2 :(得分:0)

select a.orderid, a.issueid, b.posid
from other a, position b
where a.issueid=b.issueid
and (a.issuedate = (select max(c.issuedate) from other c where c.issueid = a.issueid)
or a.issuedate is null)