【问题标题】:combining dates when doing a sum query进行总和查询时结合日期
【发布时间】:2015-10-14 20:17:32
【问题描述】:

我想对一段时间内的值求和。我遇到的困难是是否有办法将日期分配给最终值。 为了澄清,这是我的示例表。

Object  Observation  Date 
   1       215       10/1/2015
   2       125       10/1/2015
   1       225       10/4/2015
   2       150       10/4/2015
   1       250       10/8/2015

这个想法是通过对象和日期来总结观察。这很容易,困难的部分是我不确定我会怎么做。目前我使用这个查询按月求和

SELECT Object, Sum(Observation) AS [Total], Month([Date]) AS [Month], 
FROM Records
GROUP BY Month([Date]), Object;

这给出了我当月的总数。理想情况下,我想做的是让它而不是得到一个数字月份,mm,我得到一个日期 mm/dd/yyyy。因此,日期过帐总和将显示为 10/01/2015。 所以输出看起来像这样:

Object   Total    Date
   1      690    10/1/2015
   2      275    10/1/2015

我已经构建了一个查询,该查询使用日历来选择开始和结束日期,以便一次提取多个月,我可能想要比较。

SELECT Object, Date, Total
FROM Table1
WHERE [Month] Between Month(Forms![Main Form]![Start Date]) And Month(Forms![Main Form]![End Date])
GROUP BY Object, Month, Total;

我目前的方法不允许我转入下一个日历年。希望这能解决我的翻转问题。这是否可以将月份的第一天分配给月份相加后的日期?

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    可能是:

    SELECT 
        Object, 
        DateSerial(Year([Date]), Month([Date]), 1) As YearMonth, 
        Sum(Observation) AS [Total]
    FROM 
        Table1
    WHERE 
        [Date] 
            Between Forms![Main Form]![Start Date] 
            And Forms![Main Form]![End Date]
    GROUP BY 
        Object, 
        DateSerial(Year([Date]), Month([Date]), 1)
    

    【讨论】:

      【解决方案2】:

      您可以使用DateSerial() 来确定当月的第一天。

      SELECT Object, Sum(Observation) AS [Total], DateSerial(Year(Date()), Month(Date()),1) AS [Month], 
      FROM Records
      GROUP BY DateSerial(Year(Date()), Month(Date()),1), Object;
      

      【讨论】:

        猜你喜欢
        • 2014-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多