【发布时间】:2020-08-29 23:10:12
【问题描述】:
我有以下数据需要格式化以仅显示连续天而不会中断。
例如,我想显示日期从 2018-06-18 到 2018-06-21 的记录,因为这些是连续的天数。但是我不想显示日期为2018-06-27 或2018-07-03 的行,因为这些天没有序列。
Friday-Monday 例外,那里会有明显的差距。例如,如果日期是 2018-06-21(星期四)、2018-06-22(星期五)和 2018-06-25(星期一),那么这将是一个有效的序列。
2018-6-1、2018-6-3、2018-6-4的序列被破坏必须隐藏(表中没有2018-6-2的记录)。
我在下面写过,但它无法提供我正在寻找的输出。任何帮助将不胜感激。
select date, diff, Percent_gain, day, month, Year
from (
select date
,datediff(day, '2018-1-29',date) - coalesce(lag(datediff(day, '2018-1-29', date)) over (order by date), 0) as diff
,Percent_gain, day, month, year
from tab
) t1
where t1.diff < 2
and t1.Percent_gain < 0
输出
【问题讨论】:
-
那么您正在寻找的是输出是什么?此外,提供格式良好的
text或 DDL 和 DML 语句的示例数据要好得多。请不要指望这里的用户会转录您的数据,因为他们不太可能会。 -
谢谢。我根据提供的样本数据添加了预期的输出。所有按顺序排列的日子都必须可见。
-
2018-6-1 和 2018-6-3 不是按顺序排列的,但为什么 2018-6-3、2018-6-4 不被视为连续天数。
标签: sql sql-server date window-functions gaps-and-islands