Как сгенерировать разделение номера строки по совпадению двух столбцов в sql - PullRequest
0 голосов
/ 02 июля 2018

tbl1

---------------------------------------------------------
Id      Date        Qty      ReOrder
---------------------------------------------------------
1       1-1-18      1        3
2       2-1-18      0        3
3       3-1-18      2        3
4       4-1-18      3<      >3
5       5-1-18      2        3
6       6-1-18      0        3
7       7-1-18      1        3
8       8-1-18      0        3
---------------------------------------------------------

Я хочу получить результат, как показано ниже

---------------------------------------------------------
Id      Date        Qty      ReOrder
---------------------------------------------------------
1       1-1-18      1        3
5       5-1-18      2        3
---------------------------------------------------------

если ReOrder не совпадает с Qty, то дата будет такой же до повторного заказа = Qty

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете использовать совокупный подход с функцией row_number():

select top (1) with ties *
from (select *, max(case when qty = reorder then 'v' end) over (order by id desc) grp
      from table
     ) t
order by row_number() over(partition by grp order by id); 

К сожалению, для этого потребуется SQL Server , но вы также можете сделать:

select *
from (select *, row_number() over(partition by grp order by id) seq
      from (select *, max(case when qty = reorder then 'v' end) over (order by id desc) grp
            from table
           ) t
     ) t
where seq = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...