所以我在数据库中有一个表,其中包含以下字段:
交易编号
客户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/