我有一个包含以下项目的数据集:
如果某个帐户在某个月没有收入总额,则该帐户/月没有记录。
我想知道每个帐户 - 该帐户没有收入的连续月份的最大数量是多少?
例如,如果帐户123在过去12个月中每个月都有收入,则其计数将为0.
如果帐户987连续4个月有收入,那么连续5个月没有收入,其余月份的收入则为5。
如果帐户657每隔一个月有一次活动,那么他们的计数将是1,b / c 1是没有活动的连续月份的最大数量。
提前致谢
示例数据
**Accnt** |**Month-Yr** |**Revenue**
123 |8/1/2016 |1000
123 |9/1/2016 |1500
123 |10/1/2016 |500
123 |11/1/2016 |100
123 |12/1/2016 |250
123 |1/1/2017 |750
123 |2/1/2017 |900
123 |3/1/2017 |700
123 |4/1/2017 |1200
123 |5/1/2017 |250
123 |6/1/2017 |750
123 |7/1/2017 |900
123 |8/1/2017 |700
123 |9/1/2017 |1200
987 |8/1/2016 |100
987 |9/1/2016 |250
987 |10/1/2016 |750
987 |11/1/2016 |900
987 |5/1/2017 |700
987 |6/1/2017 |1300
987 |7/1/2017 |250
987 |8/1/2017 |750
987 |9/1/2017 |900
657 |8/1/2016 |700
657 |10/1/2016 |1200
657 |12/1/2016 |100
657 |2/1/2017 |250
657 |4/1/2017 |750
657 |6/1/2017 |900
657 |8/1/2017 |700
Accnt 123 would be 0 months
Accnt 987 would be 5 months
Accnt 657 would be 1 month
答案 0 :(得分:0)
这个怎么样? (因为您发布了最少的信息,我保留在我解释时创建自己的DDL的权利。)
IF OBJECT_ID ('tempdb..#') IS NOT NULL
DROP TABLE #sales
GO
CREATE TABLE #sales
(Dte datetime
,amt int
,id int
,rownum int identity PRIMARY KEY
)
INSERT INTO #sales
SELECT '9/1/17',1200, 987
INSERT INTO #sales
SELECT '10/1/17',1100, 987
INSERT INTO #sales
SELECT '11/1/17',1000, 987
INSERT INTO #sales
SELECT '5/1/18',1900, 987
INSERT INTO #sales
SELECT '6/1/18',120, 987
INSERT INTO #sales
SELECT '4/1/17',100, 657
INSERT INTO #sales
SELECT '5/1/17',190, 657
INSERT INTO #sales
SELECT '7/1/17',12, 657
GO
SELECT MAX(DATEDIFF(dd,a.dte,b.dte)), a.id
FROM #sales a
INNER JOIN #sales b
ON a.rownum = b.rownum-1
AND a.id =b.id
GROUP BY a.id