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

如何通过SQL Server视图保留特定列值最大的重复行?

需求完全可行!

当然可以实现这个需求,在SQL Server里我们有几种简洁的方式达成目标——基于第一、第二列识别重复组,只保留每组中第四列值最大的记录,第三列的存在完全不影响逻辑,只是会被正常返回在视图里。

下面给你两种常用的实现方案:

方案一:使用ROW_NUMBER()窗口函数(推荐)

这种方法可以精准控制只返回每组内第四列最大的一行(如果有多个行第四列值相同,还能通过额外排序规则确定优先级):

CREATE VIEW vw_UniqueMaxRecords
AS
SELECT Col1, Col2, Col3, Col4
FROM (
    SELECT 
        Col1, Col2, Col3, Col4,
        -- 按前两列分组,每组内按第四列降序排,标记行号
        ROW_NUMBER() OVER (PARTITION BY Col1, Col2 ORDER BY Col4 DESC) AS RowNum
    FROM YourTableName -- 替换成你的实际表名
) RankedRecords
WHERE RowNum = 1; -- 只取每组里排第一的(第四列最大的)行

如果同一分组内有多个行的第四列值相同,你可以在ORDER BY里加额外条件(比如ORDER BY Col4 DESC, Col3 DESC)来指定筛选优先级,避免随机返回。

方案二:使用MAX()聚合函数关联

这种方法通过子查询先算出每组的最大第四列值,再关联原表找到对应记录:

CREATE VIEW vw_UniqueMaxRecords
AS
SELECT t.Col1, t.Col2, t.Col3, t.Col4
FROM YourTableName t
INNER JOIN (
    -- 按前两列分组,求出每组的最大第四列值
    SELECT Col1, Col2, MAX(Col4) AS MaxCol4
    FROM YourTableName
    GROUP BY Col1, Col2
) GroupedMax ON t.Col1 = GroupedMax.Col1 
             AND t.Col2 = GroupedMax.Col2 
             AND t.Col4 = GroupedMax.MaxCol4;

注意:如果同一分组内有多个行的第四列值都是最大值,这个方案会返回所有这些行;如果你只需要唯一一行,方案一更适合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:19:33