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