首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于同一表的两列进行过滤

基于同一表的两列进行过滤
EN

Stack Overflow用户
提问于 2018-07-17 03:34:32
回答 0查看 33关注 0票数 0

我的表有4列,由两个组(ID_PROCESSO, ID_INSTANCIA_BPM)(ID_INSTANCIA_BPM_PAI, ID_PROCESSO_PAI)分隔。

如果第二组(ID_INSTANCIA_BPM_PAI AND ID_PROCESSO_PAI)null,并且此记录的第一组不是作为第二组记录的ID_PROCESSO == ID_PROCESSO_PAI,则必须返回它。

如果第二组(ID_INSTANCIA_BPM_PAI AND ID_PROCESSO_PAI)not nullID_PROCESSO <> ID_PROCESSO_PAI,则必须返回。

对于sqlfiddle示例,返回应该遵守如下规则

代码语言:javascript
复制
#|ID_PROCESSO|ID_INSTANCIA_BPM|ID_INSTANCIA_BPM_PAI|ID_PROCESSO_PAI
1   3   2957    (null)  (null)  --Returned
2   5   2958    2957    3   --Returned
3   4   2960    (null)  (null)  --Returned
4   4   2975    (null)  (null)  --Returned
5   3   2976    (null)  (null)  --Removed by #10
6   3   2977    (null)  (null)  --Removed by #9
7   5   2978    2977    3   --Removed by #8
8   5   2979    2978    5   --Returned
9   3   2980    2977    3   --Returned
10  3   2981    2976    3   --Returned
11  4   2984    (null)  (null)  --Returned

所以结果一定是:

代码语言:javascript
复制
#|ID_PROCESSO|ID_INSTANCIA_BPM|ID_INSTANCIA_BPM_PAI|ID_PROCESSO_PAI
1   3   2957    (null)  (null)  --Returned
2   5   2958    2957    3   --Returned
3   4   2960    (null)  (null)  --Returned
4   4   2975    (null)  (null)  --Returned
8   5   2979    2978    5   --Returned
9   3   2980    2977    3   --Returned
10  3   2981    2976    3   --Returned
11  4   2984    (null)  (null)  --Returned

http://sqlfiddle.com/#!18/32c86/1

有没有人知道这是否只能通过select来实现,或者我是否需要一个游标来实现这个结果?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51368966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档