您好我需要一个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
非常感谢您的帮助。
答案 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