Выбор строки на основе условия другого столбца - PullRequest
0 голосов
/ 27 марта 2019

У меня есть следующий вывод:

ApplicationNumber ApplicationStatusCode CreatedOn      AppStat_Disbursed/Unc

1                 AnnuledCL             1.3.2019 8:44  Uncompleted
2                 AnnuledCL             1.3.2019 8:45  Uncompleted
3                 Paid                  1.3.2019 8:54  Disbursement
3                 Paid                  1.3.2019 8:54  Uncompleted
4                 Paid                  1.3.2019 8:59  Disbursement
4                 Paid                  1.3.2019 8:59  Uncompleted
4                 Paid                  1.3.2019 8:59  Uncompleted
5                 Paid                  1.3.2019 9:03  Uncompleted
6                 RejectedAS            1.3.2019 9:04  Uncompleted

Я пытаюсь добиться удаления дубликатов application_numbers со следующим условием.Если существует несколько записей для ApplicationNumber (т. Е. Повторяющихся записей), он должен выбрать и расставить приоритеты для строк, имеющих статус «Выплата», а не «Не завершено».Однако, если для этого applicationNumber нет статуса «Выплата», он должен занять любую строку из статуса «Незавершенный».

Это желаемый результат:

ApplicationNumber ApplicationStatusCode CreatedOn     AppStat_Disbursed/Unc
1                 AnnuledCL             1.3.2019 8:44  Uncompleted
2                 AnnuledCL             1.3.2019 8:45  Uncompleted
3                 Paid                  1.3.2019 8:54  Disbursement
4                 Paid                  1.3.2019 8:59  Disbursement
5                 Paid                  1.3.2019 9:03  Uncompleted
6                 RejectedAS            1.3.2019 9:04  Uncompleted

1 Ответ

0 голосов
/ 27 марта 2019

Одним из способов решения этой проблемы было бы добавление ROW_NUMBER, разделенного на ApplicationNumber, а затем дополнительно упорядоченного по AppStat_Disbursed/Unc

SELECT ApplicationNumber
      ,ApplicationStatusCode
      ,CreatedOn
      ,[AppStat_Disbursed/Unc]
  FROM (
            SELECT *
                  ,ROW_NUMBER() OVER (PARTITION BY ApplicationNumber 
                                          ORDER BY ApplicationNumber, [AppStat_Disbursed/Unc])
                             AS rn
              FROM YOURTABLE
       ) A
 WHERE rn = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...