TSQL根据最高日期选择不同的

TSQL根据最高日期选择不同的,tsql,Tsql,我们的数据库中有一组记录,它们具有相同的发票号,但具有不同的日期和注释 所以你可能会有 invoice date notes 3622 1/3/2010 some notes 3622 9/12/2010 some different notes 3622 9/29/1010 Some more notes 4212 9/1/2009 notes 4212 10/10/2010 di

我们的数据库中有一组记录,它们具有相同的发票号,但具有不同的日期和注释

所以你可能会有

invoice    date         notes
 3622      1/3/2010     some notes
 3622      9/12/2010    some different notes
 3622      9/29/1010    Some more notes
 4212      9/1/2009     notes
 4212      10/10/2010   different notes
我需要选择不同的发票号码、日期和备注。用于具有最近日期的记录

所以我的结果应该包含

3622      9/29/1010    Some more notes
4212      10/10/2010   different notes
这怎么可能呢? 谢谢

试试看:


使用分析功能:

WITH TT AS (
    SELECT invoice, date, notes, RANK() OVER(PARTITION BY invoice ORDER BY date DESC) AS R
    FROM table
)
SELECT invoice, date, notes
FROM TT
WHERE R = 1;

我认为你内心的疑问是错误的。。。它将只返回1行。然后整个查询只返回一行…这正是我需要它做的。非常感谢你!谢谢你,文森特。我整天都在寻找这个解决方案。令人惊讶的是,这个问题的观点相对较少。这个问题是最有用的答案之一,在很多情况下对我都有帮助!
SELECT I.* 
FROM MyInvoice AS I
INNER JOIN 
           (SELECT Invoice, MAX([Date]) AS MaxDate
            FROM MyInvoice 
            GROUP BY Invoice
           ) AS M ON I.Date = M.MaxDate 
                 AND I.Invoice = M.Invoice
WITH TT AS (
    SELECT invoice, date, notes, RANK() OVER(PARTITION BY invoice ORDER BY date DESC) AS R
    FROM table
)
SELECT invoice, date, notes
FROM TT
WHERE R = 1;