根据SQL中的某些条件创建新列

时间:2019-01-15 05:50:58

标签: sql teradata

我有下表。我们称之为orders。我想在此现有表中添加一个新列,该列通过customerid计算距首次订购日期的天数。如果距离最低销售日期还有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 :(得分:1)

使用窗口聚合:

select customerid, orderdate,
   orderdate - min(orderdate) over (partition by customerid) as daysapart
from mytab

答案 1 :(得分:0)

这是使用相关子查询的一种方法:

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;