2014-02-28 22 views
0

我想根據MAINT_DATE選擇給定TICKET的最後三條記錄。這是使用MS Access中的查詢/表格。以下是我現在正在處理的重複內容。但是,我無法弄清楚其餘的。任何幫助將不勝感激給定主鍵的最後3個日期ACCESS SQL

示例 - 只選擇那些在最近3(注:我希望讓所有其他領域也一樣)

Ticket MaintDate 
100  2/2/2014 
100  2/3/2014 < 
100  2/4/2014 < 
100  2/5/2014 < 
101  2/2/2014 
101  2/3/2014 < 
101  2/4/2014 < 
101  2/5/2014 < 

SELECT DISTINCT 
    NAME, 
    TICKET, <-- Primary Key 
    TITLE, 
    STATUS, 
    RESOLUTION_DATE, 
    DAYS_OLD, 
    MAINT_DATE, 
    PROGRESS_NOTE 
FROM 
    PNT_Primary 
WHERE 
    STATUS = 'ACTIVE' 
ORDER BY 
    NewName, TICKET, MAINT_DATE; 

非常感謝您的幫助.. 。

+1

你正在使用什麼RDBMS? –

回答

0

如果你有票,您可以使用:

SELECT TOP 3 NAME, TICKET, <-- Primary Key 
     TITLE, STATUS, RESOLUTION_DATE, DAYS_OLD, MAINT_DATE, PROGRESS_NOTE 
FROM PNT_Primary 
WHERE STATUS = 'ACTIVE' and TICKET = XXX 
ORDER BY MAINT_DATE DESC; 

然而,如果TICKET是主鍵,如問題所示,那麼將不會有重複的值。

如果你想要所有門票的最後三張,那就更難了。下面是一個方法:

SELECT NAME, TICKET, <-- Primary Key 
     TITLE, STATUS, RESOLUTION_DATE, DAYS_OLD, MAINT_DATE, PROGRESS_NOTE 
FROM PNT_Primary p 
WHERE STATUS = 'ACTIVE' and 
     3 >= (select count(*) 
      from PNT_Primary p2 
      where p2.ticket = p.ticket and p2.status = 'ACTIVE' and 
        pt2.main_date >= p.maint_date 
      ) 
ORDER BY MAINT_DATE DESC; 

where子句中的子查詢計數的具有的一個MAINT_DATE大於或等於值的記錄的數目。

+0

感動了一下,它就像一個魅力。欣賞它! SELECT新名稱,TICKET,TITLE,STATUS,RESOLUTION_DATE,DAYS_OLD,MAINT_DATE,PROGRESS_NOTE FROM progressnoteTracker_Primary p WHERE STATUS = 'ACTIVE' 和 3> =(SELECT COUNT(*) 從progressnoteTracker_Primary P2 其中p2.ticket = p.ticket and p2.status ='ACTIVE'and p2.MAINT_DATE> = p.MAINT_DATE ) ORDER BY NewName,TICKET,MAINT_DATE DESC; – user3150260

相關問題