在 Access 中减去相同序列号的日期
Subtract dates for the same serial number in Access
您好,我需要一个 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
非常感谢您的帮助。
我猜我们在问题中遗漏了一些数据,但我想我理解你的问题。
您有一个 table 包含使用您描述的上述设置(serialNumber、serviceNumber、createdDate 和 Type)的记录。您想查看自上次服务日期以来的时间。
您将需要执行某种形式的 table 的自连接,然后找到使用 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
您对序列号执行自连接,并且在数据集中服务的组件在 a 中的别名比在 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
您好,我需要一个 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
非常感谢您的帮助。
我猜我们在问题中遗漏了一些数据,但我想我理解你的问题。
您有一个 table 包含使用您描述的上述设置(serialNumber、serviceNumber、createdDate 和 Type)的记录。您想查看自上次服务日期以来的时间。
您将需要执行某种形式的 table 的自连接,然后找到使用 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
您对序列号执行自连接,并且在数据集中服务的组件在 a 中的别名比在 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