2013-07-12 49 views
0

我编写了以下查询以返回具有最新日期的记录。SQL服务器中的MAX聚合函数

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,标题,desc等

如何检索记录及其相应的列?这样做的

回答

2

夫妇方式:

-- 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
WITH t AS (
      SELECT fs.company_id, 
        fs.create_dt AS latestcreatedate, 
        id, 
        title, 
        etc, 
        ROW_NUMBER() OVER (PARTITION BY fs.company_id ORDER BY fs.create_dt DESC) AS rowNum 
      FROM  field_sale fs 
     ) 
SELECT t.company_id, 
     t.latestcreatedate, 
     t.id, 
     t.title, 
     t.etc 
FROM t 
WHERE t.rowNum = 1 
ORDER BY t.company_id