SQL查询各备份类型最新成功/错误状态单条记录方法
M_BACKUP_CATALOG 分组取最新备份记录SQL方案
你需要的是2种备份类型、2种状态共4个维度组合下,各自时间最新的1条记录,用窗口函数分区排序实现最简洁,适配M_BACKUP_CATALOG所属的SAP HANA数据库语法:
SELECT ENTRY_TYPE_NAME, Status, TimeStamp FROM ( SELECT ENTRY_TYPE_NAME, Status, TimeStamp, ROW_NUMBER() OVER ( PARTITION BY ENTRY_TYPE_NAME, Status ORDER BY TimeStamp DESC ) AS row_rank FROM M_BACKUP_CATALOG WHERE Status IN ('Success', 'Error') AND ENTRY_TYPE_NAME IN ('complete data backup', 'log backup') ) ranked_records WHERE row_rank = 1 ORDER BY TimeStamp DESC;
逻辑说明
- 内层查询通过
PARTITION BY ENTRY_TYPE_NAME, Status将符合状态、类型过滤条件的记录拆分为4个独立分组,正好对应你需要的4类结果 - 每个分组内按
TimeStamp字段倒序编号,最新的记录编号固定为1 - 外层过滤仅保留编号为1的记录,最终返回结果数固定为4条,和你给出的预期时间点完全匹配
如果存在同一分组下
TimeStamp完全一致的重复备份记录,可以在窗口函数的排序规则中追加备份唯一标识字段(比如BACKUP_ID),调整为ORDER BY TimeStamp DESC, BACKUP_ID DESC即可保证取数唯一。
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

