在Access中减去相同序列号的日期

时间:2017-05-02 09:09:57

标签: sql ms-access subtraction

您好我需要一个SQL代码来减去MsAccess的日期

例如

serialNumber    serviceWoNumber createdDate type    Results should be
900017672280000 1700028713      17.01.2017   CD 
731127155164500 1600729135      14.12.2016   CD     =14.12.2016-7.12.2016=7
731127155164500 1600712441      7.12.2016    CD     =7.12.2016-5.12.2016=2

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我猜我们在问题中缺少一些数据,但我想我理解你的问题。

您有一个包含记录的表,使用您描述的上述设置(serialNumber,serviceNumber,createdDate和Type)。您想要检查自项目服务的最后日期起服务的时间。

您需要执行某种形式的表的自联接,然后找到使用DATEDIFF来执行计算。它看起来像以下(伪代码):

SELECT
    a.serialNumber, DATEDIFF('d', a.createdDate, b.createdDate) AS serviceInterval
FROM
    myTable a
    LEFT JOIN myTable b ON a.serialNumber = b.serialNumber 
    AND a.createdDate > b.createdDate

您对序列号执行自联接,并且稍后在数据集中提供服务的组件别名为b。

这不会考虑您之前从未提供过服务的项目,因此您可能需要添加一些数据来处理数据集b中的NULL值。

如果我完全误解了你的问题,请告诉我。

****更新以下评论****

根据您的评论,您希望添加减法结果,您可以使用以下内容(假设您添加了一个名为serviceInterval的列:

UPDATE myTable updateMe
SET 
    updateMe.serviceInterval = a.serviceInterval
FROM
    myTable a
    LEFT JOIN myTable b ON a.serialNumber = b.serialNumber 
    AND a.createdDate > b.createdDate
WHERE
    updateMe.serialNumber = a.serialNumber