需求:查詢各個設備存在未消缺的缺陷,取缺陷等級最高的,作為這個設備當前的缺陷等級:
數據源:
select t.device_id, t.defect_level from sp_pd_defect t where t.deal_result <> 2 and t.device_id in ('03060000083602', '03060000085322', '03060000085762', '03060000087242', '03060003731354') group by t.device_id, t.defect_level order by t.device_id, t.defect_level asc;
如圖:
要求: 需求獲取紅色部分的內容,,那么對應的SQL語句為
select device_id 設備ID, defect_level 缺陷等級 --缺陷等級,1緊急,2重大,3一般,4其他 from (select t.device_id, t.defect_level, row_number() over(partition by t.device_id order by t.defect_level asc) rn from sp_pd_defect t where t.deal_result <> 2 and t.device_id in ('03060000083602', '03060000085322', '03060000085762', '03060000087242', '03060003731354')) where rn = 1;
結果如圖:

其中: row_number() over(
partition
by 分組字段
order
by 排序字段
desc