SQL实现按ID与DATE1分组取每组最小非零DIFF及对应DATE2
按ID与DATE1组合分组的取值需求及样例
原始测试数据
ID DATE1 DATE2 DIFF 1 3-4-20 3-4-20 0 1 7-15-20 3-4-20 133 2 2-28-20 2-28-20 0 3 9-11-20 9-11-20 0 3 12-11-20 9-11-20 91 4 6-17-20 1-24-20 145 * 最小非零DIFF 4 6-17-20 6-17-20 0 5 5-15-20 2-19-20 86 * 符合取值要求 5 5-15-20 2-19-20 86 5 7-21-20 2-19-20 153 5 7-21-20 6-1-20 50 * 最小非零DIFF 5 9-25-20 2-19-20 219 5 9-25-20 6-1-20 116 * 最小非零DIFF 5 9-25-20 9-25-20 0 5 10-30-20 2-19-20 254 5 10-30-20 6-1-20 151 5 10-30-20 9-25-20 35 * 最小非零DIFF
取值规则
- 分组维度:以
ID + DATE1的组合为最小分组单元,对全量数据做拆分 - 优先取值逻辑:每个分组内如果存在非零DIFF值,提取该分组下最小的非零DIFF值,同时返回该值对应的DATE2字段
- 兜底取值逻辑:如果分组内没有非零DIFF值、所有记录的DIFF均为0,直接保留该分组下DIFF为0的对应记录
最终期望输出
ID DATE1 DATE2 DIFF 1 3-4-20 3-4-20 0 1 7-15-20 3-4-20 133 2 2-28-20 2-28-20 0 3 9-11-20 9-11-20 0 3 12-11-20 9-11-20 91 4 6-17-20 1-24-20 145 5 5-15-20 2-19-20 86 5 7-21-20 6-1-20 50 5 9-25-20 6-1-20 116 5 10-30-20 9-25-20 35
内容的提问来源于stack exchange,提问作者GNMO11
相关产品推荐
相关产品推荐

