如何在SQL列中的最后一个键入记录中执行搜索?

时间:2014-01-10 04:18:46

标签: sql sql-server-2008

下面有一个包含3列示例的表格。该表填充了少量记录。我有一项任务是搜索下面的每个debtorid,并返回特定状态的最后一次出现,例如PTP。我通过followupdate查询表格顺序,如下所示:

    SELECT TOP 50 [status],[FollowupDate],debtorid 
    FROM dbo.FollowUp 
    WHERE ( dbo.FollowUp.FollowUpDate >= '01-01-2014 00:00:00.000' 
          and dbo.FollowUp.FollowUpDate <= '01-10-2014 23:59:00.00')  
    ORDER BY FollowUpDate 

从上表中,最后一个[状态]&#39; PTP&#39; debtorid&#39; 589009&#39;在第一行,我想要返回第一行,因为[debtorid] 589006在第二行,最后是debtorid&#39; 589002&#39;从下面的DESC订单中排在第三位。查询应该返回那三行。请问我该如何存档。

我以为我应该能够恢复状态&#39; PTP&#39;从表中简单地说就像

SELECT TOP 1 * FROM [tblname] WHERE date BETWEEN date1 and dat2 AND status='PTP' 

然而,这不是表格明智的。它相当debtorid明智,这是表中的一列和

2 个答案:

答案 0 :(得分:0)

以下应该可以解决问题:

SELECT Status, DebtorId, MAX(FollowUpDate)
FROM dbo.FollowUp
WHERE Status = 'PTP'
GROUP BY
  Status, DebtorId;

请注意,例如债务人589002在同一天有多个“PTP”状态,因此需要GROUPING确保忽略重复项。

答案 1 :(得分:0)

试试这个..

SELECT    DISTINCT Status,DebtorId,FollowupDate 
FROM      dbo.FollowUp 
WHERE     Status='PTP'
AND       FollowupDate BETWEEN date1 AND date2