我遇到了业务流程特有的问题。我的用户需要知道在特定的结束时间之前计算的日期数,这些日期在小时或当天不匹配。
这是一个例子。
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的情况下实现这一目标。
答案 0 :(得分:0)
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
答案 1 :(得分:0)
在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)