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;
展开
 我来答
帐号已注销
2015-07-01 · TA获得超过315个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:249万
展开全部

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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式