【问题标题】:SQL Count of date values that dont match hour and day in select statement选择语句中与小时和日期不匹配的日期值的 SQL 计数
【发布时间】:2016-04-28 04:51:07
【问题描述】:

我遇到了业务流程特有的问题。我的用户需要知道在特定结束时间之前有多少个日期在小时或当天不匹配。

这是一个例子。

AAA, 2016-03-15 16:00:28.967, 2016-03-15 16:02:58.487, 2016-03-17 14:01:24.243

在上面的示例中,id AAA 有 3 个条目。我只需要计算时间和日期不匹配的那些。所以实际的计数应该是 2。

我必须在 SQL 中完成这一切,不能使用 CTE。它需要是子选择或某种类型的连接。

类似的东西。

SELECT id, date, (
    SELECT COUNT(*) 
    FROM x 
    WHERE day!=day 
    AND hour!=hour AND date < z
) AS DateCount

结果将是AAA, 2

我正在考虑某种类型的递归比较,但我不确定如何在没有 CTE 的情况下完成此操作。

【问题讨论】:

  • 我不能使用 CTE,因为这是一个更大的语句的一部分。

标签: sql sql-server sql-server-2012


【解决方案1】:

在 SQL Server 中,您可以尝试以下操作:

SELECT id, CONVERT(VARCHAR(13), [date], 120) AS [Date], COUNT(*) AS DateCount
FROM YourTable
WHERE [date] < #ENDDATE
GROUP BY id, CONVERT(VARCHAR(13), [date], 120)

【讨论】:

    【解决方案2】:
    SELECT a AS current_a, COUNT(*) AS b,day AS day, hour as hour, 
        (SELECT COUNT(*)
         FROM t 
         WHERE day != day 
         AND hour != hour 
         AND date < z ) as datecount
    FROM t GROUP BY a ORDER by b DESC
    

    【讨论】:

      猜你喜欢
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      相关资源
      最近更新 更多