2017-07-04 59 views
-1

我是MS ACCESS的新手,并且无法从重叠的时间范围获取记录数。这是我的数据的一个例子。获取时间重叠的2列中的记录数

example of raw data

enter image description here

我试图做的是让列number_of_records。例如,如果在5.11处添加了4条记录,则number_of_records应该变为8,因为在5.10处添加4条记录。

example of raw data with no_of_records column

enter image description here

有上面我的形象是错误的。例如,我忘记提到,如果时间到了6点,记录数不应该添加到以前的记录,并应该重新开始。

你们有没有任何建议?

回答

1

考虑相关子查询计数:

SELECT t.time_column_1, t.time_column_2, 
    (SELECT Count(*) FROM myTable sub 
     WHERE sub.time_column_1 <= t.time_column_1 
     AND sub.time_column_2 = t.time_column_2) AS number_of_records 
FROM mytable t 
ORDER BY t.time_column_2, t.time_column_1 
+0

您好,感谢答复。当我执行这段代码时,我仍然收到同一行数据的重复项,我该如何删除它? – Jamie

+0

没关系,谢谢你的帮助,我用DISTINCT解决了这个问题。 – Jamie

+0

该解决方案不使用'JOIN','WHERE'或'UNION',因此不会添加任何行。只使用内联聚合。所以你引用的*重复*必须存在于原始数据源中。 – Parfait