【问题标题】:T-SQL - Selecting amount of rows created each day over period of time using DateTime columnT-SQL - 使用 DateTime 列选择一段时间内每天创建的行数
【发布时间】:2017-07-31 19:49:13
【问题描述】:

我对 T-SQL、存储过程和 Microsoft SQL Server Management Studio 还是很陌生。

我有一个名为 HistoryDe​​tails 的表,其中存储了过去 6 个月的通话历史记录。它有一个 DateTime 列来了解何时进行了呼叫。我正在创建一个仪表板,我想在其中创建一个每天拨打电话数量的列表。

这是我数据库中数据的简化示例:

------------------------------------------------------
| Id | DateTime                | Message             |
|----+-------------------------+---------------------|
| 1  | 2017-02-27 11:52:44.723 | Room 101 called you |
|----+-------------------------+---------------------|
| 2  | 2017-02-27 11:53:58.689 | Room 101 called you |
|----+-------------------------+---------------------|
| 3  | 2017-02-28 10:41:30.440 | Room 102 called you |
------------------------------------------------------

我想要的结果是天数列表和每天的调用次数(创建的行数)。 (我的数据库保留数据 6 个月,所有超过 6 个月的都被删除)

例如:

----------------------------------------
| Date        | Amount of calls (rows) |
|-------------+------------------------|
| 2017-02-27  | 2                      |
|-------------+------------------------|
| 2017-02-28  | 1                      |
|-------------+------------------------|
| 2017-03-01  | 5                      |
|-------------+------------------------|
| 2017-02-02  | 2                      |
----------------------------------------

到目前为止,我能够进行的 SQL 查询只能返回一天的调用量(创建的行),这是查询:

SELECT COUNT(*)
FROM HistoryDetails
WHERE (AlarmHistoryDetails.DateTime BETWEEN DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0) AND DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 1))

这会导致:

(No column name)
22

这不是我所需要的。

需要什么查询才能得到我需要的结果?

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    您正在寻找group by:

    SELECT CAST(hd.DateTime as DATE) as dte, COUNT(*)
    FROM HistoryDetails hd
    GROUP BY CAST(hd.DateTime as DATE)
    ORDER BY dte;
    

    【讨论】:

      【解决方案2】:

      你想要 GROUP BY CLAUSE:

      SELECT CAST(DateTime as DATE) as [Date], COUNT(*) As AmountOfCalls
      FROM HistoryDetails
      GROUP BY CAST(DateTime as DATE)
      ORDER BY [Date];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-25
        • 2019-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 2022-01-18
        相关资源
        最近更新 更多