ОБНОВЛЕНИЕ
У вас может быть более 1 результата в день, и вы сказали, что хотите обеспечить следующее:
- Текущий статус 'c'
- Предыдущий статус (днем ранее) - 'c'
- Нет предыдущего статуса (днем ранее) для 'n'
Так что для этого у вас естьсделать второе соединение, левое соединение, чтобы убедиться, что там нет никакой связи, что-то вроде:
SELECT a1.* FROM A
INNER JOIN A a2 ON DATEDIFF(DAY, a1.Date, a2.Date) = 1 AND a2.Status = 'c'
LEFT JOIN A a3 ON DATEDIFF(DAY, a1.Date, a3.Date) = 1 AND a3.Status = 'n'
WHERE a3.Status IS NULL
Таким образом, вы гарантируете отсутствие предыдущего статуса 'n'.
Скрипка обновлена по этому сценарию: Скв. Скрипка
ОРИГИНАЛЬНАЯ ПОЧТА
Я заставил ее работать с ВНУТРЕННИМ СОЕДИНЕНИЕМ, нов моем примере поле «дата» называется «поле даты» и является целым числом.Но его можно легко изменить.
Нам нужно знать, чтобы помочь, если у вас будет одна запись в день.
В любом случае, вот пример: SQL Fiddle
Запрос будет выглядеть примерно так:
SELECT a1.* FROM A
INNER JOIN A a2 ON DATEDIFF(DAY, a1.Date, a2.Date) = 1 AND a2.Status = 'c'
Надеюсь, это поможет.