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相关的另一行。