gpt4 book ai didi

Ms Access 数据库的SQL查询

转载 作者:行者123 更新时间:2023-12-04 18:33:00 26 4
gpt4 key购买 nike

下面是我在ms access中的表结构,

SNo    Time        EmpId    Date      Type
-------------------------------------------
1 09:20:53 AM 1 9/12/2012 IN
2 09:50:12 AM 1 9/12/2012 OUT
3 09:52:09 AM 1 9/12/2012 IN
4 12:15:10 PM 1 9/12/2012 OUT

输出应该比较时间并找到第一两行和接下来的两行(第三和第四行)的差异需要的输出是,

EmpId   Date          Time
1 9/12/2012 0:30:41
1 9/12/2012 2:23:01

有人可以帮忙吗。非常感谢,谢谢。

最佳答案

我认为这个查询接近您想要的,假设您的 DateTime 字段都是日期/时间数据类型。如果它们实际上是文本类型,您可以使用 CDate() 转换它们的值。但无论哪种方式,我认为使用单个字段来保存日期和时间的查询会更容易,同时而不是为每个单独的字段。

SELECT
sub.SNo,
sub.EmpId,
sub.Type,
sub.start_time,
sub.end_time,
Format(sub.end_time - sub.start_time, 'h:nn:ss') AS duration
FROM
(
SELECT
o.SNo,
o.Date + o.Time AS end_time,
o.EmpId,
o.Type,
(
SELECT TOP 1 i.Date + i.Time
FROM YourTable AS i
WHERE
i.Type = 'IN'
AND i.EmpId = o.EmpId
AND i.Date + i.Time < o.Date + o.Time
ORDER BY i.Date, i.Time DESC
) AS start_time
FROM YourTable AS o
WHERE o.Type='OUT'
) AS sub;

BTW、DateTimeType 是保留字,因此不是字段名称的理想选择。尽管这些名称不会影响此查询,但您可以通过重命名这些字段(如果可能)来避免其他潜在的麻烦。

关于Ms Access 数据库的SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com