2016-04-27 98 views
0

我有一個業務流程特有的問題。我的用戶需要知道在特定的結束時間之前有多少日期計算在小時或一天不匹配。SQL在select語句中不匹配小時和日期的日期值計數

這裏是一個例子。

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

微軟SQL 2012 – DonnieCrump

+0

我不能使用一個CTE,因爲這是一個數,它是大型語句的一部分。 – DonnieCrump

回答

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 
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)