Sql server 2008 sql server中的最大聚合函数

Sql server 2008 sql server中的最大聚合函数,sql-server-2008,tsql,ssms,Sql Server 2008,Tsql,Ssms,我编写了以下查询以返回具有最新日期的记录 select fs.company_id, max(fs.create_dt) as latestcreatedate from field_sale fs group by fs.company_id order by fs.company_id 查询工作正常。但是我需要检索包含所有相关列的记录。例如,id、标题、描述等 如何检索包含相应列的记录?两种方法: -- 1. SELECT a.* FROM field_sale a INNER J

我编写了以下查询以返回具有最新日期的记录

select fs.company_id, max(fs.create_dt) as latestcreatedate
from field_sale fs 
group by fs.company_id
order by fs.company_id
查询工作正常。但是我需要检索包含所有相关列的记录。例如,id、标题、描述等


如何检索包含相应列的记录?

两种方法:

-- 1. 
SELECT a.* 
FROM field_sale a 
INNER JOIN 
(
select fs.company_id, max(fs.create_dt) as latestcreatedate
from field_sale fs 
group by fs.company_id   
)b 
ON b.company_id = a.company_id AND b.latestcreatedate = a.create_dt
order by a.company_id;

--  2.  
SELECT b.* FROM 
( 
   SELECT a.* , ROW_NUMBER() 
    OVER (PARTITION BY a.company_id ORDER BY a.create_dt DESC)
    AS rn
   FROM field_sale a 
)b WHERE b.rn  = 1
ORDER BY company_id

有两种方法可以做到这一点:

-- 1. 
SELECT a.* 
FROM field_sale a 
INNER JOIN 
(
select fs.company_id, max(fs.create_dt) as latestcreatedate
from field_sale fs 
group by fs.company_id   
)b 
ON b.company_id = a.company_id AND b.latestcreatedate = a.create_dt
order by a.company_id;

--  2.  
SELECT b.* FROM 
( 
   SELECT a.* , ROW_NUMBER() 
    OVER (PARTITION BY a.company_id ORDER BY a.create_dt DESC)
    AS rn
   FROM field_sale a 
)b WHERE b.rn  = 1
ORDER BY company_id