根据结果​​中的值抑制行

时间:2019-03-01 20:11:09

标签: sql sql-server

我无法终生解决该问题。

有无限数量的组ID,以及大约5个processID的集合。 显示的内容取决于groupID中存在的processID。

我有一个具有以下简化设置的表:

groupID int
processID int

其中,每个交易的组ID均相同。每个交易可以有多个属于该组的流程。

具有如下所示的值,例如:

Group ID   ProcessID    
1           1x2
1           1x2
1           2y4 
1           2y4
1           3u7
1           4i9
1           5x4

我需要编写只返回进程ID 4的查询,如果同一组中同时存在1x2、2y4和4i9,则抑制1x2和2y4。如果仅存在1x2和2y4,则返回2y4,从结果集中消除1x2。

因此,如果对于给定的processID我有1x2,2y4,4i9,则输出将如下所示:

1x2 4i9

如果1x2和5x4存在于同一组中,则也有可能只显示1x2。

该查询显示数十列,我希望在没有分组依据的情况下执行此操作,但似乎找不到解决方法。

1 个答案:

答案 0 :(得分:1)

您似乎想要max()

select groupId, max(processId)
from t
group by groupId;