【发布时间】:2023-03-08 02:15:01
【问题描述】:
我有一个事件表,其中将存储参与的用户列表。
样本数据:
╔════╦══════╦══════╗
║ id ║ name ║ year ║
╠════╬══════╬══════╣
║ 1 ║ Arun ║ 2001 ║
║ 2 ║ Arun ║ 2002 ║
║ 3 ║ Arun ║ 2003 ║
║ 4 ║ Arun ║ 2004 ║
║ 5 ║ Arun ║ 2009 ║
║ 6 ║ Arun ║ 2010 ║
║ 7 ║ Arun ║ 2011 ║
║ 8 ║ Bala ║ 2014 ║
║ 9 ║ Bala ║ 2015 ║
║ 10 ║ Bala ║ 2017 ║
║ 11 ║ chan ║ 2014 ║
║ 12 ║ chan ║ 2015 ║
║ 13 ║ chan ║ 2018 ║
╚════╩══════╩══════╝
我只需要在新列中找到连续参加三年的用户。即使用户连续参加了 6 年,也必须在一个列中拆分为前三个,在另一列中拆分为后三个。
输出:
╔════╦══════╦═══════════╗
║ id ║ name ║ years ║
╠════╬══════╬═══════════╣
║ 1 ║ Arun ║ 2001-2003 ║
║ 2 ║ Arun ║ 2009-2011 ║
╚════╩══════╩═══════════╝
【问题讨论】:
-
搜索间隙和岛屿
-
@Frisbee 样品我将不胜感激。
标签: sql sql-server database sql-server-2012 gaps-and-islands