首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接两个表,并只获取发行人最大发行日期的记录。

连接两个表,并只获取发行人最大发行日期的记录。
EN

Stack Overflow用户
提问于 2013-10-04 10:06:35
回答 3查看 52关注 0票数 0

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

位置表

代码语言:javascript
复制
posid   |    issuerid
----------------------

其他表

代码语言:javascript
复制
OtherID    |  issuerid   |   issue_date 
--------------------------------------

,我想要

代码语言:javascript
复制
OtherID    |  issuerid   |   Posid
--------------------------------------

对于某些发行人来说,Issue_date可能为空。我希望其他id,发行人id和位置,其中发行日期是最大的,如果有任何对发行人,否则为空。

EN

回答 3

Stack Overflow用户

发布于 2013-10-04 10:35:18

代码语言:javascript
复制
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日期时间字段中的最小值。当然,只要它小于表中最小的值,就可以使用任何值。

票数 0
EN

Stack Overflow用户

发布于 2013-10-04 10:43:24

代码语言:javascript
复制
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])
票数 0
EN

Stack Overflow用户

发布于 2013-10-04 10:44:23

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19178567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档