Исключить записи - PullRequest
       7

Исключить записи

0 голосов
/ 04 ноября 2019

enter image description here

Я пишу TSQL, чтобы исключить некоторые данные в хранимой процедуре.

Сценарий состоит в том, что есть четыре идентификатора точек данных: Recordnumer, OrderDate, RejectDate

  1. Идентификатор может иметь несколько одинаковых или разных дат заказа и даты отклонения.

Мне нужно исключить все записи, кроме 01.01.1900 (это не фактическое отклонение, а нулевое значение, которое заменяется этим значением). Однако, если нет отклонения с 01.01.1900, тогда я должен удалить все записи, кроме максимума даты отклонения.

Номер записи - это округлый номер, который я сделал, используя Row over partition. Прошу пролить свет: на изображении есть конкретные записи, и мне нужно применить это правило ко всем записям в таблице. Ожидаемые результаты выделены желтым цветом для разных идентификаторов

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Кажется, вам не нужно row_number() для этого

 select id  
            , OrderDate
            , RejectDate
            , max(case when RejectDate = '1900-01-01' then '9999-12-31' else RejectDate end) as rSum
         from tableA
         group by id, OrderDate, RejectDate
0 голосов
/ 04 ноября 2019

Это то, что вы хотите?

select t.*
from t
where t.reject_date = '1900-01-01' or
      t.reject_date = (select max(t2.reject_date)
                       from t t2
                       where t2.id = t.id
                      );

Для каждого идентификатора сохраняются строки, где reject_date - 1900-01-01, или дата отклонения - максимальная дата отклонения для этого идентификатора.

РЕДАКТИРОВАТЬ:

Это может быть более целесообразным:

select t.*
from t
where t.reject_date = (select t2.reject_date
                       from t t2
                       where t2.id = t.id
                       order by (case when t2.reject_date = '1900-01-01' then 1 else 2 end),
                                t2.reject_date desc
                      );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...