Sql 具有联接的每个策略的最新记录计数

Sql 具有联接的每个策略的最新记录计数,sql,join,count,max,Sql,Join,Count,Max,我有三个表需要联接并查询每个策略的总记录计数,但只有表显示与最近运行日期对应的计数。我已经很接近了,但是我的计数保留了所有的运行日期,而不是像我期望的那样使用max()选择最近的运行日期。我绞尽脑汁,尝试了几种不同的方法。非常感谢任何帮助。我为所有截图的超链接道歉。我是这个论坛的新手,我不知道如何格式化表格数据和报表 以下是我最初的出发点: SELECT d.max(r.RunDate), p.PolicyName, COUNT(r.UID_Records) FROM Policy p INNE

我有三个表需要联接并查询每个策略的总记录计数,但只有表显示与最近运行日期对应的计数。我已经很接近了,但是我的计数保留了所有的运行日期,而不是像我期望的那样使用max()选择最近的运行日期。我绞尽脑汁,尝试了几种不同的方法。非常感谢任何帮助。我为所有截图的超链接道歉。我是这个论坛的新手,我不知道如何格式化表格数据和报表

以下是我最初的出发点:

SELECT
d.max(r.RunDate),
p.PolicyName,
COUNT(r.UID_Records)
FROM Policy p
INNER JOIN Records r ON p.UID_Policy = r.UID_Policy
LEFT JOIN RunDate d ON d.UID_RunDate = r.UID_RunDate 
      AND d.ProcessedOn = 
        (
           SELECT MAX(ProcessedOn) 
           FROM RunDate x 
           WHERE x.UID_RunDate = d.UID_RunDate
        )
GROUP BY p.PolicyName

这是我使用上述查询得到的结果:

这就是我想要回报的:

您可以使用Rank()函数,该函数将根据最近的日期对策略进行排序。我没有完全构建您的模式,也没有运行您的查询,但对模式进行了快速模拟,并运行了以下查询: 这将有助于实现您的最终输出

SELECT
  date,
  policy,
  RANK() OVER (
    ORDER BY
        date desc
 ) AS rnk
FROM table

Results from this query:
9/16/20|policy3|1
9/13/20|Policy1|2
7/2/20|policy2|3

请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。暂停总体目标的工作,在第一个表达中删去代码,不要给出你的期望,说出你的期望以及为什么。请。仅将图像用于不能表示为文本或扩充文本的内容。在图片中加入图例/图例和说明。这篇文章中唯一的实际答案是“尝试使用排名函数”。这不是个好主意。指向其他资源的链接不是答案,它们只是补充。把YOU需要回答或询问的内容放在帖子中,而不仅仅是在链接上。PS如果您提供了链接或图像,请使用编辑功能。请仅将图像用于不能表示为文本或扩充文本的内容。在图片中包含图例/图例和说明。有关设置链接格式的帮助将非常有用-我尝试按照示例进行操作,但没有转换。谢谢。请阅读“编辑帮助”中有关手动键入格式化链接的重新选项,并重新单击图标。对于SQL,最好使用sqlfiddle.com或dbfiddle.uk,因为它们对访问者的干扰较小。但是:“把你需要回答或询问的内容放在帖子里,而不仅仅是一个链接。”这意味着一切。仅对补充内容使用链接。请参阅我对问题帖子的评论。PS问题是,如果被钉住(显然)是一个很容易找到的副本,那么不应该回答。@philipxy我已经编辑了我的回复,使用dbfiddle.uk并将其转换为链接