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

SSMS视图如何获取Col1、Col2去重行及对应Col3与最大TimeDate

错误原因说明

  • DISTINCT ON 是PostgreSQL数据库专属语法,SQL Server(SSMS对应的数据库)不支持该语法,因此触发Incorrect syntax near 'on'报错。
  • 第二种写法存在两处问题:一是聚合函数语法错误,Max[TimeDate] 需修改为Max(TimeDate);二是将Col3、TimeDate加入GROUP BY后会导致分组粒度变细,无法实现按Col1、Col2去重、取对应最大时间记录的需求。

正确实现方案

使用窗口函数ROW_NUMBER()实现需求,逻辑为:按Col1、Col2分组,每组内按TimeDate倒序排序,取每组排序第一的记录,即可同时获取对应行的Col3值。
完整视图创建语句如下:

Create View [VIEWNAME] As
SELECT [Col1], [Col2], [Col3], [TimeDate]
FROM (
    SELECT 
        [Col1], [Col2], [Col3], [TimeDate],
        ROW_NUMBER() OVER (PARTITION BY [Col1], [Col2] ORDER BY [TimeDate] DESC) AS rn
    FROM [Table]
) AS t
WHERE rn = 1

如果同一个Col1、Col2组合下存在多条TimeDate相同的最大值记录,且需要全部返回时,将ROW_NUMBER()替换为RANK()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:39:02