У меня есть таблица с несколькими строками для каждого «номера дела». Я хочу выбрать одну строку для каждого номера дела и объединить ее с другой таблицей, поддерживая отношение один к одному.
Условия для выбора этой строки:
1) Прежде всего отфильтруйте все строки для каждого номера дела, для которого Stage = Cancelled
2) Если вы найдете Stage = «In Progress» или «Paused», выберите эту строку. (Только один из этих двух может присутствовать для номера дела)
3) Если нет (2), выберите «Этап =« Завершено », но для последнего« Время останова ». (Именно здесь я подумал, что нам, возможно, придется использовать ROW_NUMBER ())
Я уже создал запрос для ввода номеров строк и выбора одной строки на основе последнего «времени останова», но я не могу понять, как добавить вышеупомянутые фильтры и условия if-else в них .
SELECT [Case Number],
ROW_NUMBER ( )
OVER ( PARTITION BY [Case Number] order by [Stop time] desc ) idx
,[Stage]
,[Time left]
,[SLA definition]
,[Elapsed time]
,[Elapsed percentage]
,[Start time]
,[Stop time]
,[Has breached]
,[Breach time]
,[Updated]
,[Updated by]
,[Created]
,[Created by]
FROM ( select * from [SLA_Data] where Stage != 'Cancelled' )v1