我的下表有开始日期和结束日期:
dataid TS EndTS
1744 7/27/17 1:57:34 PM 7/27/2017 1:57:38 PM
1743 7/27/17 1:57:31 PM 7/27/2017 1:57:34 PM
1742 7/27/17 1:57:23 PM 7/27/2017 1:57:31 PM
1741 7/27/17 1:57:16 PM 7/27/2017 1:57:23 PM
1740 7/27/17 1:57:04 PM 7/27/2017 1:57:16 PM
1739 7/27/17 1:56:57 PM 7/27/2017 1:57:04 PM
1738 7/27/17 1:56:38 PM 7/27/2017 1:56:57 PM
我想获取日期/时间间隔(以秒为单位),然后计算一个运行总计。
这是我到目前为止所做的:
SELECT
[dataid] AS [dataid]
DateDiff("s", [TS],[EndTS]) AS [durationsec]
DSum("[durationsec]","[HX32]","[dataid] <=" & [dataid]) AS [add]
FROM [HX32];
我认为datediff()函数可能会导致格式化问题。使用"[durationsec]"
我得到所有空值,[durationsec]
我得到以下结果:
durationsec add
4 6896
3 5169
8 13776
7 12047
12 20640
7 12033
19 32642
我也试过cint(DateDiff("s", [TS],[EndTS]))
没有变化。
我还尝试将durationsec传递给表并运行单独的查询。没变。 (我也希望在一个查询中完成所有这些)
以下是我想要实现的结果:
dataid TS EndTS durationsec add
1744 7/27/17 1:57:34 PM 7/27/2017 1:57:38 PM 4 60
1743 7/27/17 1:57:31 PM 7/27/2017 1:57:34 PM 3 56
1742 7/27/17 1:57:23 PM 7/27/2017 1:57:31 PM 8 53
1741 7/27/17 1:57:16 PM 7/27/2017 1:57:23 PM 7 45
1740 7/27/17 1:57:04 PM 7/27/2017 1:57:16 PM 12 38
1739 7/27/17 1:56:57 PM 7/27/2017 1:57:04 PM 7 26
1738 7/27/17 1:56:38 PM 7/27/2017 1:56:57 PM 19 19
谢谢,我是初学者。
答案 0 :(得分:1)
DSum正在查看[HX32]表或查询以查找名为[durationsec]的字段。那里不存在。
SELECT
[dataid],
DateDiff("s",[TS],[EndTS]) AS [durationsec],
DSum("DateDiff('s',[TS],[EndTS])","[HX32]","[dataid] <=" & [dataid]) AS [add]
FROM [HX32];`
注意使用撇号来分隔嵌套DateDiff中的's'参数。
另一种方法是在Report中执行运行总和,因为report中的文本框具有RunningSum属性。查询中的域聚合函数可以在大型数据集中执行缓慢。
答案 1 :(得分:1)
时间不是秒,而是整数天,所以你可以尝试:
SELECT
[dataid],
DateDiff("s", [TS], [EndTS]) AS [durationsec],
DSum("[EndTS]-[TS]", "[HX32]", "[dataid] <= " & [dataid] & "") * 86400 AS [add]
FROM
[HX32];
那就是说,六月的方法也应该有效。如果两者都失败了,还会发生其他事情。
答案 2 :(得分:1)
SELECT dataid,
startts,
endts,
DATEDIFF("s", startts,endts) AS durationsec,
SUM(DATEDIFF("s", startts,endts)) OVER (ORDER BY endts ROWS UNBOUNDED PRECEDING) AS runningtotal
FROM durtab
ORDER BY 5 DESC;
结果:
dataid startts endts durationsec runningtotal
1744 2017-07-27 13:57:34.000 2017-07-27 13:57:38.000 4 60
1743 2017-07-27 13:57:31.000 2017-07-27 13:57:34.000 3 56
1742 2017-07-27 13:57:23.000 2017-07-27 13:57:31.000 8 53
1741 2017-07-27 13:57:16.000 2017-07-27 13:57:23.000 7 45
1740 2017-07-27 13:57:04.000 2017-07-27 13:57:16.000 12 38
1739 2017-07-27 13:56:57.000 2017-07-27 13:57:04.000 7 26
1738 2017-07-27 13:56:38.000 2017-07-27 13:56:57.000 19 19