tsql - 如何编写 T-SQL 查询来为每个客户端选择前 1 条记录?

标签 tsql group-by greatest-n-per-group

我有一个简单的脚本,试图获取每个客户端的最新记录。我如何在 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

最佳答案

通过在 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

关于tsql - 如何编写 T-SQL 查询来为每个客户端选择前 1 条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343278/

相关文章:

sql - 如何只插入一个IDENTITY列插入表(SQL Express)

sql - 从 VARCHAR 中提取数字

sql - 如何用T-SQL编写传输

mysql - SQL 查询生成器 - 分组和排序 (Laravel)

来自 www.db-class.com 的 SQL 查询

sql - 如何防止数据库触发器递归?

mysql - 查询中的 SUM、GROUP BY 和 LEFT JOIN

mysql - 计算按用户分组的唯一天数

mysql - 如何提取具有最大值的行?

sql - 如何将此 mysql 查询转换为 postgres 9.4