Sql 按选择分组中的第一行

Sql 按选择分组中的第一行,sql,oracle,Sql,Oracle,我得到这张桌子: 我收到了这个请求: SELECT FirstId,SecondId FROM Table GROUP BY FirstId,SecondId ORDER BY CASE WHEN SecondId= 18 THEN 1 ELSE 2 END 所以我得到了这个结果: 但我只想得到按FirstId分组并按第一个请求排序的行,如下所示: 这就是你想要的吗 SELECT FirstId, (CASE WHEN SUM


我得到这张桌子:

我收到了这个请求:

SELECT FirstId,SecondId
FROM Table  
GROUP BY FirstId,SecondId
ORDER BY CASE 
    WHEN SecondId= 18 
        THEN 1
        ELSE 2 
END
所以我得到了这个结果:

但我只想得到按FirstId分组并按第一个请求排序的行,如下所示:
这就是你想要的吗

SELECT FirstId,
       (CASE WHEN SUM(CASE WHEN SecondId = 18 THEN 1 ELSE 0 END) > 0
             THEN 18 ELSE MAX(SecondId)
        END) as SecondId
FROM Table  
GROUP BY FirstId
ORDER BY FirstId;

为什么?期望结果背后的逻辑是什么?您需要某种时间戳或rowid来获得“第一个请求”。表数据未排序。没有“第一个请求”…你能详细说明一下吗?@Rahul第二个ID链接到某个用户。我想将该行附加到当前用户,如果它不存在,我将使用与第一个ID相关的另一行。