【发布时间】:2018-01-19 04:23:46
【问题描述】:
我想连续几个月检查 ID,如果连续两个月存在相同的 ID,则仅考虑第 1 个月的 ID。
如果 ID 不是连续月份,则显示按开始日期月份分组的不同 ID。(我们只考虑开始日期)
例如,ID 1 存在于 1 月和 2 月的开始日期月份,那么此 ID 的不同计数将在 1 月为 1,但 ID 2 和 3 是什么
出现在 1 月和 3 月以及 2 月和 5 月 Resp,现在我想在 1 月和 3 月看到这个不同的 ID 计数。
当前数据
表1:
ID StartDate EndDate
1 2017-01-12 2017-01-28
1 2017-01-19 2017-01-28
1 2017-01-29 2017-02-11
1 2017-02-01 2017-02-11
1 2017-02-19 2017-02-24
2 2017-01-12 2017-01-28
2 2017-01-19 2017-01-28
2 2017-03-09 2017-03-20
3 2017-02-12 2017-02-28
3 2017-02-19 2017-02-28
3 2017-05-05 2017-05-29
3 2017-05-09 2017-05-29
我尝试了以下逻辑 bt 我知道我在这里遗漏了一些东西。
select t.* from Table1 t
join Table1 t t1
on t1.ID=t.ID
and datepart(mm,t.StartDate)<> datepart(mm,t1.StartDate)+1
预期结果:
DistinctCount StartDateMonth(In Numbers)
1 1(Jan)
2 1(Jan)
2 3(March)
3 2(Feb)
3 5(May)
感谢任何帮助!
【问题讨论】:
标签: sql-server tsql sql-server-2012