ich eine Tabelle mit einer Liste der Fälle haben, und eine Liste der Status, die sie haben:SQL zählen, wie oft Status erscheinen nacheinander
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
ich zeigen möchte, dass es einen neuen Rekord, aber Status für der gleiche Fall gleich geblieben:
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
Wenn ich so etwas tun:
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
es nicht nehmen Beachten Sie, dass die letzte 'Hold' war nach der 'Open' und setzt Nummer 3, obwohl ich Nummer 1 brauche.
können Sie bitte erwähnen, welche Art von Ausgabe, die Sie – mansi