SQL сравнивает первую и вторую строки из каждой группы, упорядоченные по дате, чтобы что-то делать или нет - PullRequest
0 голосов
/ 12 марта 2019

Это сложный вопрос, но я борюсь с SQL, поскольку я все еще учусь.Обратите внимание, у меня есть обширная БД (это связано с работой).Я использую Microsoft Management Studio 2017

Таблица SomeStatus имеет 5 столбцов:

id, someFk, type, status, createdDttm

, где someFk имеет повторяющиеся записи (каждый раз, когда изменяется статус).

Сначала я подумал, что могу продолжить, основываясь на значении самой последней строки для каждого someFk, поэтому я сделал объединение группа + (что я получил из другого ответа: P)

update SomeStatus 
set status = 'F', type = 'Withdrawn'
from   
    (select someFk, max(createdDttm) AS createdDttm
     from SomeStatus    
     group by someFk) as last
inner join SomeStatus ss on ss.someFk = last.mpanFk 
                         and ss.createdDttm = last.createdDttm
~followed by several joins~
where 
    acc.cancel = 'Y' 
    and (ss.status = 'A' or ss.status = 'B' or ss.status = 'C')

НоЯ не могу все это обновить.Мне нужно делать разные вещи, основываясь на второй строке каждой группы someFk (поэтому я предполагаю, что для каждого поведения требуется два разных запроса).

Удалить самую последнюю строку, если статус первой строки = 'A / B / C'и статус второй строки =' F 'обновить / вставить, если статус первой строки и второй строки =' A / B / C '

Извините, если я не очень хорошо объясняю.Я думаю, что мне нужно сделать еще одно групповое объединение с упорядочением по / смещению, но не могу использовать это с группированием по?Не уверен: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...