【问题标题】:grouping a datetime column only by time仅按时间对日期时间列进行分组
【发布时间】:2016-10-28 03:50:34
【问题描述】:

我有一个列日期日期格式,间隔为 15 分钟,另一列称为 datavalues 和相应的数据。我想将数据值汇总到 1 小时。我附上屏幕截图。 。所以我的新列应该有“DATA_VALUES”列的聚合值。并且 datetime 列应该只代表几小时而不是 15 分钟。请帮忙,我已经尝试 cast() 转换为时间,但无法继续进行。

【问题讨论】:

    标签: sql sql-server datetime sql-server-2012 group-by


    【解决方案1】:

    您可以使用以下公式将日期截断为小时:

    DATEADD(HOUR, DATEDIFF(HOUR, 0, the-date-value), 0)
    

    所以完整的查询是:

    SELECT
      DATEADD(HOUR, DATEDIFF(HOUR, 0, KEY_POINT_DTTM_15MIN), 0),
      SUM(DATA_VALUE)
    FROM mytable
    GROUP BY
      DATEADD(HOUR, DATEDIFF(HOUR, 0, KEY_POINT_DTTM_15MIN), 0)
    

    【讨论】:

    • 谢谢您,先生,但我的主要要求是将这些数据值添加到 1 小时,因此选择语句应该显示 2 个列而不是 4 个值。 Data_values_aggregated 将所有 4 个值相加,然后日期时间部分应仅显示 2015-01-01 00:00:000,因为在这一小时内,这些值已添加到聚合列中
    • 啊,明白了。请参阅更新的答案。将来,我建议在您的问题中包含预期的输出。你会得到一个正确的答案,而且你会更快地得到它:)
    • 非常感谢先生。!你真的救了我。 :)
    猜你喜欢
    • 2013-01-16
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多