sql查询按时间排序,分组时不连续的记录另外分组 10
字段userId,date数据1,2011;1,2013;2,2014;2,2015;2,2016;1,2017;1,2018;如何对不连续的数据也进行分组展示取最大值。...
字段 userId,date
数据 1,2011;
1,2013;
2,2014;
2,2015;
2,2016;
1,2017;
1,2018;
如何对不连续的数据也进行分组展示取最大值。
展示结果为1,2013;
2,2016;
1,2018; 展开
数据 1,2011;
1,2013;
2,2014;
2,2015;
2,2016;
1,2017;
1,2018;
如何对不连续的数据也进行分组展示取最大值。
展示结果为1,2013;
2,2016;
1,2018; 展开
展开全部
sql server 2012以下版本实现方法:
WITH TMP1 AS
(SELECT T.*, ROW_NUMBER() OVER(ORDER BY DATE) RN FROM 表 T)
SELECT USERID, DATE
FROM (SELECT A.*,
CASE
WHEN A.USERID != B.USERID OR
B.USERID IS NULL THEN
A.DATE
ELSE
纳悄闹 NULL
END AS DATE
FROM 洞罩 TMP1 A
LEFT 运毁 JOIN TMP1 B
ON B.RN = A.RN + 1)
WHERE DATE IS NOT NULL
sql server 2012 以上版本和oracle:
SELECT USERID, DATE
FROM (SELECT T.*,
CASE
WHEN USERID != LEAD(USERID) OVER(ORDER BY DATE) OR
LEAD(USERID) OVER(ORDER BY DATE) IS NULL THEN
DATE
ELSE
NULL
END AS DATE
FROM 表 T)
WHERE DATE IS NOT NULL
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询