访问-查询以获取每个唯一机会的最新条目

问题描述

我需要从名为tblNotes的表中获取每个notedata的最新opportunityid

这是tblNotes中数据的样子。

enter image description here

这是我希望数据显示的样子:

enter image description here

我对sql不太了解,但是我发现我需要一个内部查询。我读过的书说Access将notesdate存储为日期和时间代码

这是我拼凑的代码

SELECT t1.*
FROM tblNotes AS t1 INNER JOIN 
    (SELECT opportunityid,notesdata,MAX(notesdate) AS MaxDate 
     FROM tblnotes GROUP BY opportunityid,notesdata)  
    AS t2 ON (t1.opportunityid=t2.opportunityid) AND  (t1.notesdate=t2.MaxDate);

这就是我得到的:

enter image description here

您可以看到...甚至还没有关闭。我认为基本结构隐藏在某处……也许。

谢谢

解决方法

我想你想要

select n.*
from tblNotes as n
where n.notesId = (select top 1 n2.notesId
                   from tblNotes as n2
                   where n2.opportunityId = n.opportunityId
                   order by n2.notesDate desc,n2.notesId desc
                  );

假设notesid是主键,即使最近的日期有多个音符,也将opportunityId返回一行。如果您想在最近的日期所有笔记,请使用:

select n.*
from tblNotes as n
where n.notesDate = (select max(t2.notesDate)
                     from tblNotes as n2
                     where n2.opportunityId = n.opportunityId
                    );
,

我认为这很干净:从输入中创建一个带有oppty-id和每个oppty-id的max notes-date的内联搜索表,并将该表内部连接回到较小表的两列上的输入:

DROP TABLE input;                                                                  
CREATE TABLE 
input(notesid,opportunityid,notesdate,notesuser,notesdata) AS 
          SELECT  5,DATE '2020-07-14',3,'kkk'
UNION ALL SELECT  3,1,2,'another test to run'
UNION ALL SELECT  1,'This is just a test. Next action is..'
UNION ALL SELECT  9,DATE '2020-07-27',4,'test'
UNION ALL SELECT 12,DATE '2020-07-28','another day in paradise'
UNION ALL SELECT 13,DATE '2020-08-14','another test .. maybe this time'
UNION ALL SELECT  2,6,'another test to see how it works'
;

SELECT
  i.*
FROM input i
INNER JOIN (
  SELECT
    opportunityid,MAX(notesdate) AS notesdate
  FROM input
  GROUP BY opportunityid
) m
  ON m.opportunityid=i.opportunityid
 AND m.notesdate    =i.notesdate
-- out  notesid | opportunityid | notesdate  | notesuser |            notesdata            
-- out ---------+---------------+------------+-----------+---------------------------------
-- out        2 |             6 | 2020-07-14 |         3 | another test to see how it works
-- out        5 |             0 | 2020-07-14 |         3 | kkk
-- out       13 |             1 | 2020-08-14 |         1 | another test .. maybe this time