select t.*, t.rowid from test_t t;
SELECT k.XMGUID,
k.HF_MESSAGE,
substr(MAX(sys_connect_by_path(trim(K.STATUS_T), ' ')), 3)
FROM (SELECT T.XMGUID,
T.HF_MESSAGE,
T.STATUS,
DECODE(T.STATUS, NULL, '', ',' || T.STATUS) AS STATUS_T,
ROW_NUMBER() OVER(PARTITION BY T.XMGUID, T.HF_MESSAGE ORDER BY T.XMGUID, T.HF_MESSAGE) AS ID1,
ROW_NUMBER() OVER(ORDER BY T.XMGUID, T.HF_MESSAGE) + DENSE_RANK() OVER(ORDER BY T.XMGUID, T.HF_MESSAGE) ID2
FROM TEST_T T
GROUP BY T.XMGUID, T.HF_MESSAGE, T.STATUS) K
start with k.id1 = 1
connect by prior (k.id2) = (k.id2 - 1)
group by k.XMGUID, k.HF_MESSAGE;
分组排序取第一条数据
SELECT * FROM
(SELECT ROW_NUMBER() OVER(PARTITION BY taskbreakid ORDER BY responsedate DESC) LEV, r.* FROM tablename r)
WHERE LEV = 1
(SELECT ROW_NUMBER() OVER(PARTITION BY taskbreakid ORDER BY responsedate DESC) LEV, r.* FROM tablename r)
WHERE LEV = 1
/*
--ORDER BY responsedate DESC
taskbreakid ---> 分组列
responsedate ---> 分组中排序列
tablename ---> 表名
*/
/* 取第一条数据 */
select*from(select*fromtablename t orderbypaisulie)where rownum = 1
--ORDER BY responsedate DESC
taskbreakid ---> 分组列
responsedate ---> 分组中排序列
tablename ---> 表名
*/
/* 取第一条数据 */
select*from(select*fromtablename t orderbypaisulie)where rownum = 1
本文介绍如何使用SQL从数据库中选取特定分组下的最新记录,并提供了具体示例,包括利用ROW_NUMBER()函数进行分组排序以获取每组的第一条记录。
1027

被折叠的 条评论
为什么被折叠?



