首页 > 解决方案 > 重写存储过程以按组返回第一个元素

问题描述

我有一个返回每个组的第一个元素的查询,但我正在使用相关的子查询来执行此操作:

select 
    id,
    date, 
    data
    (select top 1
         id,
         date,
         data
    from table as t2
    where t2.id = t1.id
    order by t2.date) as first
from table t1;

目标是返回所有数据,以及每行的第一项。

如何重写此查询,使其不会扫描整个表 N 次以查找表中的 N 条记录?

标签: sql-servertsql

解决方案


您可以从仅获取第一行的 CTE 开始,id然后将主查询加入到 CTE 上id


推荐阅读