SqlServer分组排序取最值

在两个表已经是组合查找的基础上,分组排序,且取最值

WITH RankedRecords AS (
    SELECT 
        t1.*, 
        t2.complete_machine_card_ID,
        ROW_NUMBER() OVER (PARTITION BY t2.complete_machine_card_ID ORDER BY t1.data_time DESC) AS rn
    FROM (
        SELECT 
            [lcdCardId], [inspector], [batch], [result], [data_time], 
            [protocol_type], [communication_card_ID], [instrument_card_ID]  
        FROM MS0210_OutProduct_Release 
        WHERE data_time BETWEEN CONVERT(date, 'xx', 23) AND CONVERT(date, 'xx', 23) 
              AND result='合格'
    ) AS t1
    JOIN (
        SELECT [complete_machine_card_ID], [instrument_card_ID] 
        FROM MS0210_CompleteMachineIdList
    ) AS t2 
    ON t1.instrument_card_ID = t2.instrument_card_ID
    WHERE t2.complete_machine_card_ID BETWEEN 'xx' AND 'xx'
)
SELECT * 
FROM RankedRecords 
WHERE rn = 1;

核心在于ROW_NUMBER() OVER (PARTITION BY t2.complete_machine_card_ID ORDER BY t1.data_time DESC) AS rn这句

 

posted on 2025-05-16 16:38  J·Marcus  阅读(37)  评论(0)    收藏  举报

导航