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这句
浙公网安备 33010602011771号