3

我有一个简单的脚本,我试图获取每个客户的最新记录。我如何在 TSQL 中做到这一点?这是我目前的代码,但是,这仅选择了一条记录总数。这一条记录显示所有客户的最新记录,而不是每个客户!请问我该如何重新制定这个?

SELECT TOP 1
C.ClientID, actual_date
From ClientRecords C
WHERE (@ClientID is NULL or C.Client_ID = @ClientID)
Group by C.ClientID, actual_date
ORDER BY C.actual_date
4

4 回答 4

4

在actual_date上使用MAX()函数 聚合列

SELECT  C.ClientID, MAX(actual_date) max_DATE
From    ClientRecords C
WHERE   (@ClientID is NULL or C.Client_ID = @ClientID)
Group   by C.ClientID
ORDER   BY C.actual_date
于 2013-03-11T16:10:59.593 回答
1

这尚未经过测试,但它应该类似于:

select 
c.clientId, max(actual_date) as Actual_date
from clientrecords C
group by c.clientID
order by c.clientID

这将为您提供每个客户的最高实际日期,按 clientId 排序。

于 2013-03-11T16:16:08.000 回答
0

谢谢大家,但我找到了一个更令人满意的解决方案:

WITH rs AS
(

SELECT 
C.ClientID, actual_date,ROW_NUMBER() OVER(ORDER BY C.ClientID, actual_date)rid
From ClientRecords C
)

SELECT * FROM rs WHERE rid =1
于 2013-03-11T18:54:59.643 回答
0

您可以为此目的使用 SUBQUERY:

SELECT 
    C.ClientID ,
    (SELECT MAX(C1.actual_date) FROM ClientRecords C1 WHERE C1.Client_ID = C.Client_ID) AS MaxDate
FROM ClientRecords C
WHERE (@ClientID is NULL or C.Client_ID = @ClientID)
Group by C.ClientID, actual_date
ORDER BY C.actual_date
于 2013-03-13T07:48:33.673 回答