0

次のクエリを変更して、一意の Part_Number ごとに最新の Quote_Date のみの Quote.Quote を返すにはどうすればよいですか? Quote は一意であるため、最初のレコードのみを返すことはできません。これはほぼ同じ方法で何度も尋ねられていることは知っていますが、row_number、rank、partition、派生テーブルなどを使用して正しく理解することはできません...私は立ち往生しています。助けてくれてありがとう。

    Sample
    Quote     Part_Number     Quote_Date
    1              a              1/1/12
    2              a              1/2/12
    3              a              1/3/12
    4              b              1/2/12
    5              b              1/3/12
    6              c              1/1/12

    Desired Results
    Quote     Part_Number     Quote_Date
    3              a              1/3/12
    5              b              1/3/12
    6              c              1/1/12

    SELECT Quote.Quote, Quote.Part_Number, MAX(RFQ.Quote_Date) AS Most_Recent_Date
    FROM Quote INNER JOIN RFQ ON Quote.RFQ = RFQ.RFQ
    GROUP BY Quote.Part_Number, Quote.Quote
    HAVING (NOT (Quote.Part_Number IS NULL))
4

3 に答える 3

0

CTE を使用すると、作業が非常に簡単になり、読みやすくなります。

;with cte as (
    select
        *,
        row_number() over (partition by Part_Number order by Quote_Date desc) rownum
    from
        @quote
)
select Quote, Part_Number, Quote_Date from cte where rownum = 1
于 2013-07-02T17:26:06.123 に答える