MS Access SQL:如何查询,从下一小时的第一行中减去一小时的首行数据



请运行代码以查看表和预期输出。

我需要按小时产量将数据分开。我正在使用MS ACCESS数据库,其中一些选项不受支持。我在查询中使用了dateadd、datediff。我也添加了我的代码。

table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<HTML>
<body>
<B>GIVEN TABLE:</B><BR><br>
<table>
<tr>
<th>TIME_STAMP</th>
<th>PRODUCE</th>
</tr>
<tr>
<td>21-Nov-20 9:00:00 AM</td>
<td>100</td>
</tr>
<tr>
<td>21-Nov-20 9:04:54 AM</td>
<td>120</td>
</tr>
<tr>
<td>21-Nov-20 9:04:54 AM</td>
<td>130</td>
</tr>
<tr>
<td>21-Nov-20 9:28:57 AM</td>
<td>150</td>
</tr>
<tr>
<td>21-Nov-20 9:29:14 AM</td>
<td>170</td>
</tr>
<tr>
<td>21-Nov-20 9:29:23 AM</td>
<td>200</td>
</tr>
<tr>
<td>21-Nov-20 10:00:00 AM</td>
<td>300</td>
</tr>
</table><br>
<B>EXPECTED OUTPUT:</B><BR><br>
<table>
<tr>
<th>HOUR_STAMP</th>
<th>HOURLY_PRODUCE</th>
</tr>
<tr>
<td>21-Nov-20 9:00:00 AM</td>
<td>100</td>
</tr>
<tr>
<td>21-Nov-20 10:00:00 AM</td>
<td>200</td>
</tr>
<tr>
</table>
</body>
</html>

每小时第一行数据之间的差异。2020年11月21日上午9点至10点,总产量为(300-100(=200

SELECT DateAdd("h",DateDiff("h",0,TIME_STAMP),0) AS HOUR_STAMP FROM 001;

可能有更好的方法,但我提出了一个查询,它应该可以工作,或者至少可以给你更多的想法。

在本例中,查询从一个名为table_data的表中获取数据,该表包含字段TIME_STAMP和PRODUCE。该查询按小时(hour_STAMP(对数据进行分组,显示每小时的第一次生产(first_produce(,显示前一小时的第一个生产(previous_first_produce(,最后显示两者之间的差异(HOURLY_produce(。

SELECT Format([TIME_STAMP],"dd-mmm-yy hh:""00"":""00""") AS HOUR_STAMP, First(PRODUCE) AS FIRST_PRODUCE, Nz(DLookUp("PRODUCE","TABLE_DATA","Format(TIME_STAMP, 'ddmmyyhh') = " & Format(DateAdd("h",-1,[HOUR_STAMP]),'ddmmyyhh')),0) AS PREVIOUS_FIRST_PRODUCE, [FIRST_PRODUCE]-[PREVIOUS_FIRST_PRODUCE] AS HOURLY_PRODUCE
FROM TABLE_DATA
GROUP BY Format([TIME_STAMP],"dd-mmm-yy hh:""00"":""00""");

相关内容

最新更新