这里连续数据集是我的表的例子:我需要返回重复值的最大数量的基础上的日期
MID RecordDate Volume
5555 4/1/2017 1
5555 4/2/2017 2
5555 4/3/2017 2
5555 4/4/2017 2
5555 4/5/2017 3
5555 4/6/2017 3
5555 4/7/2017 3
5555 4/8/2017 3
5555 4/9/2017 3
5555 4/10/2017 3
5555 4/11/2017 3
5555 4/12/2017 3
5555 4/13/2017 3
5555 4/14/2017 3
5555 4/15/2017 3
5555 4/16/2017 3
5555 4/17/2017 3
5555 4/18/2017 3
5555 4/19/2017 3
5555 4/20/2017 3
5555 4/21/2017 3
5555 4/22/2017 3
5555 4/23/2017 3
5555 4/24/2017 3
5555 4/25/2017 3
5555 4/26/2017 2
5555 4/27/2017 2
5555 4/28/2017 2
5555 4/29/2017 2
5555 4/30/2017 2
我试图与同体积返回的连续天数在规定的时间段内。在我的例子中,数据是从2017年4月1日到2017年4月30日,但实际上希望将此调整为30/40/60/90天的任何日期范围..
我的预期结果是相似的对此:
+------+-------------+------------+---------+--------+
| MID | Start Date | End Date | Volume | Count |
+------+-------------+------------+---------+--------+
| 5555 | 4/5/2017 | 4/25/2017 | 3 | 21 |
+------+-------------+------------+---------+--------+
我为我糟糕的格式化事先道歉。提前致谢!
所以在这里是为这个例子的解决方案代码,可别人帮我做这个工作有一个以上的MID,在这里我需要拉插每MID最大的伯爵表:
with cte as
(
Select top 1
md1.merrickid
, StartDate = convert(char(10),min(md1.RecordDate),120)
, EndDate = convert(char(10),max(md1.RecordDate),120)
, md1.EstGasVolMCF
, cnt = count(*)
From (
Select md.MerrickID
, md.RecordDate
, md.EstGasVolMCF
, grp = row_number() over (partition by md.merrickid order by md.RecordDate)
- row_number() over (partition by md.merrickid, md.EstGasVolMCF order by md.RecordDate)
From MeterDailyTb as md
Join CompletionTb as C
On c.MerrickID = md.MerrickID
Where md.RecordDate > '3/2/2017' --Parameter for the how far back you want to go
And c.DrillingTeamID in (24)--Drilling Team Selection Criteria
) as md1
--Where md1.merrickid = '105100'
group by md1.merrickid, md1.EstGasVolMCF, grp
order by cnt desc
)
Select *
From cte
Where cte.cnt > 30
哪些DBMS您使用的? –
你到目前为止尝试过什么? –
将表格和数据作为文本发布[阅读此](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking -a-question/285557#285557) –