下面有一个包含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
明智,这是表中的一列和
答案 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