所以我在数据库中有一个表,其中包含以下字段:


交易编号
客户ID
交易日期


我想在表中添加一个附加字段


自上次交易以来每个客户的时间


只要客户是相同的并且按日期对表进行排序,则该字段应仅为(交易日期A-交易日期B)。

我正在使用mySQL(因此没有Oracle Advances PL / SQL)。我的桌子上有很多行。

从txns中选择txn_id,cust_id,txn_date;

我该怎么做呢?

最佳答案

我认为使用关联子查询最容易做到这一点:

select t.*,
       datediff((select t2.TransactionDate
                 from t t2
                 where t2.CustomerId = t.CustomerId and
                       t2.TransactionDate < t.TransactionDate
                 order by t2.TransactionDate desc
                 limit 1
                ), t.TransactionDate) as daysSinceLastPurchase
from t;


这假设交易发生在不同的日期。

如果此假设不正确,并且事务标识按升序排列,则可以使用:

select t.*,
       datediff((select t2.TransactionDate
                 from t t2
                 where t2.CustomerId = t.CustomerId and
                       t2.TransactionId < t.TransactionId
                 order by t2.TransactionId desc
                 limit 1
                ), t.TransactionDate) as daysSinceLastPurchase
from t;

关于mysql - 自上次购买以来的时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18277282/

10-09 02:15