Создать новый столбец на основе некоторых условий в SQL - PullRequest
0 голосов
/ 15 января 2019

У меня есть следующая таблица. Давайте назовем это orders. Я хотел бы добавить новый столбец в эту существующую таблицу, который вычисляет дни, кроме первой даты заказа по обычному счету. Если с минимальной продажной датой отделяется 0 дней, то она должна быть 0.

Из этого

customerid orderdate
1          1/21/2018
1          1/21/2018
1          2/21/2018
1          5/22/2018
2          3/22/2018
3          4/5/2018
3          4/5/2018

к этому

customerid orderdate daysapart
1          1/21/2018         0
1          1/21/2018         0
1          2/21/2018        30
1          2/21/2018       123
2          3/22/2018         0
3          4/5/2018          0
3          4/5/2018          0

Ответы [ 2 ]

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

Использование оконного агрегата:

select customerid, orderdate,
   orderdate - min(orderdate) over (partition by customerid) as daysapart
from mytab
0 голосов
/ 15 января 2019

Вот один подход, использующий коррелированный подзапрос:

SELECT
    t1.customerid,
    t1.orderdate,
    t1.orderdate - (SELECT MIN(t2.orderdate)
                    FROM your_table t2
                    WHERE t1.customerid = t2.customerid) daysapart
FROM your_table t1;
...