首页 > 解决方案 > 试图在未按顺序包含的列上获得平局结果

问题描述

给定以下结果集,按Date列的降序排序。

在此处输入图像描述

我想使用Top像这样的子句:

select top 4 *
from donation d
order by d.Date desc;

这给了我以下结果:

在此处输入图像描述

尽管我将结果限制在前 4 名,但我希望能够包含最后一行,因为它与基于名称的最后一条记录 (id : 5) 相关。

标签: sql-server

解决方案


此查询首先选择前 4 个日期中的人员姓名(在公用表表达式中),然后使用这些姓名显示他们的所有数据。我想这就是你想要的。

;WITH Top4Names AS
(
    SELECT TOP 4 [Name]
    FROM donation
    ORDER BY [Date] DESC
)
SELECT d.id, d.[Name], d.Amount, d.[Date]
FROM donation d
INNER JOIN Top4Names t
ON t.[Name] = d.[Name]
ORDER BY d.[Date] DESC;

推荐阅读