Con*_*nos 1 t-sql sql-server-2008
假设我们有以下表格数据:
ID parent stage submitted
1 1 1 1
2 1 2 1
3 1 3 0
4 1 4 0
5 5 1 1
6 5 2 1
7 5 3 1
8 5 4 1
Run Code Online (Sandbox Code Playgroud)
如您所见,我们有2个组(具有相同的父组).我想选择提交的后一阶段.在上面的例子中,我想选择ID为2和8.我完全迷失了,所以如果有人可以提供帮助,我将非常感激.:)
SELECT T.ID, T.PARENT, T.STAGE
from
T,
(
select PARENT, MAX( STAGE) MAX_STAGE
from T
where SUBMITTED = 1
GROUP BY PARENT
) M
where
T.STAGE = M.MAX_STAGE
AND T.PARENT = M.PARENT
Run Code Online (Sandbox Code Playgroud)
说明:首先,使用submitted = 1(内部选择)隔离每个组的最大阶段.然后,将结果与真实表连接,以过滤掉没有最大阶段的记录.