3

我有一个关于字段 date hour和的查询value
它看起来像这样

    date       hour   value 
    xx/xx/xx     15     100
    xx/xx/xx     30     122
    xx/xx/xx     45      50
    ...         100     100
    ...         115      23
    ...         ...     ...
    ...         ...     ...
    ...        2400     400
    ...          15      23

基本上,date是日期,hour是小时,value是特定 15 分钟间隔的值。我一直试图弄清楚的是一种每小时(所以 15、30、45 和 100)或(1015、1030、1045、1100)[正如你所看到的时间是军事式的 1:00 pm 是1300 和午夜 2400],并将它们的值相加。所以我希望返回这样的东西:

    xx/xx/xx    100     372
    xx/xx/xx    200     23 + (130 data) + (145 data) + (200 data)

依此类推...该表平均大约有 100 天,它们都从 15 到 2400 开始,以 15 递增,值列的数字不同。

我曾考虑过使用分区、分组依据等,但没有真正的想法如何解决它。本质上,我必须取 4 行(一个小时),将它们的值相加,吐出日期、小时和求和值,然后每天重复。我不是要代码,只是对我应该使用的东西提供一些帮助,因为这似乎是一个简单的问题减去解决它的关键。

非常感谢任何帮助,谢谢!

4

3 回答 3

0

我可能记错了您如何在 Access 中转换为 int,但这可能有效:

Select
  [date],
  100 * (1 + Cint(([Hour] - 1) / 100)),
  Sum(Value)
From
  Query
Group By
  [date],
  100 * (1 + Cint(([Hour] - 1) / 100))
Order By
  1, 2
于 2012-11-12T20:21:18.023 回答
0
SELECT
   DateCol,
   Int(HourCol \ -100) * -100 AS Hr,
   Sum(Value) AS Value
FROM
   YourTable
GROUP BY
   DateCol,
   Int(HourCol \ -100) * -100

或者你可以使用((Hr + 99) \ 100) * 100.

于 2012-11-12T20:26:15.843 回答
0

按小时/100 分组几乎可以让您到达那里 - 从小时中减去 1 将使上午 1 点下降到 99,并被包含在分组中。这将给出一个如下所示的查询:

SELECT Table1.Dte, Int(([tme]-1)/100) AS Hr, Sum(Table1.Val) AS TotVal
FROM Table1
GROUP BY Table1.Dte, Int(([tme]-1)/100);
于 2012-11-12T20:28:07.010 回答