我有一张列表,其中包含案例和它们的状态:
Case ID | Date | Status
------ | ---------- |-------
x | 2016-11-01 | Open
x | 2016-11-03 | Hold
x | 2016-11-04 | Hold
x | 2016-11-05 | Open
x | 2016-11-08 | Hold
x | 2016-11-15 | Processing
x | 2016-11-16 | Done
我希望指出同一案件的状态保持不变,但有新记录:
Case ID | Date | Status | count
------ | ---------- |---------- |------
x | 2016-11-01 | Open | 1
x | 2016-11-03 | Hold | 1
x | 2016-11-04 | Hold | 2
x | 2016-11-05 | Open | 1
x | 2016-11-08 | Hold | 1
x | 2016-11-15 | Processing | 1
x | 2016-11-16 | Done | 1
如果我这样做:
SELECT *
FROM
(SELECT
ROW_NUMBER() OVER (partition by [Case ID], [status] ORDER BY Date) AS Row,
ID, Status, Date
FROM
Cases) AS C
WHERE
ID = x
ORDER BY
Date
它没有考虑到最后一个“持有”是在“开放”之后的,因此放置了数字3,但我需要数字1。