You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server如何实现按Ticker、ClientCode分组后每组返回1条记录

问题原因

你当前查询仅返回1条记录的核心原因是语句中使用了TOP 1关键字,该关键字会强制截断结果集,仅保留排序后的第一条记录,和你写的分组逻辑没有关联。

修正代码

如果你需要获取所有Ticker + ClientCode分组对应的统计结果,直接移除TOP 1即可,修正后的查询代码如下:

SELECT 
    Ticker,
    ClientCode,
    MAX(Earnings) Earnings,
    MAX(PrePost) AS PrePost,
    MAX(LastCSMDeliveredDate) as LastCSMDeliveredDate 
FROM test
GROUP BY Ticker,ClientCode
ORDER BY Ticker,LastCSMDeliveredDate DESC

上述代码执行后会返回5条分组结果,正好对应测试数据里的5组不同Ticker+ClientCode组合。

如果你的实际需求是每个Ticker仅保留一条最新的记录,可使用窗口函数实现,参考代码如下:

WITH Tmp AS (
    SELECT 
        Ticker,
        ClientCode,
        Earnings,
        PrePost,
        LastCSMDeliveredDate,
        ROW_NUMBER() OVER(PARTITION BY Ticker ORDER BY LastCSMDeliveredDate DESC) AS rn
    FROM test
)
SELECT Ticker,ClientCode,Earnings,PrePost,LastCSMDeliveredDate 
FROM Tmp 
WHERE rn=1

内容的提问来源于stack exchange,提问作者Babu Goel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:54:03