Поверните даты на основе значений события / статуса - PullRequest
0 голосов
/ 15 января 2020

У меня есть данные, подобные приведенным ниже для sql запроса

, и я хочу преобразовать их, как показано ниже, где 106 - начало события, а 110 - дата окончания события.

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 января 2020

; С Order_CTE AS (ВЫБРАТЬ order_Product_sk_seq, status_code, create_datetime, ROW_NUMBER () OVER (PARTITION BY order_Product_sk_seq, status_code ORDER BY create_datetime) КАК ПОСЛЕДОВАТЕЛЬНОСТЬ ОТ atclose.order_status, где status_code IN_1001 *

1001 *1001* SELECT (100,110) * SEL1 .ORDER .order_Product_sk_seq AND b1.Sequence = b2.Sequence WHERE b1.status_code = 106

;

0 голосов
/ 15 января 2020

Если последовательность записей всегда 106/110 для каждого (orders_sk_seq, order_product_sk_seq) кортежа, то вы можете просто использовать lead():

select *
from (
    select 
        orders_sk_seq, 
        order_product_sk, 
        create_datetime start_date,
        status_code,
        lead(create_datetime) over(
            partition by orders_sk_seq, order_product_sk_seq order by create_datetime
        ) end_date
    from mytable
) t
where status_code = 106
order by start_date
...