我有問題SELECT COUNT不同:我需要的答案是6 不同的時間是300秒<在數爲1 我的SQL:如何選擇COUNT DISTINCT?
SELECT COUNT(DISTINCT(cast([Date] as date) + cast([time] as datetime)))
FROM [Table1]WHERE [DATE] = '2013-06-22'
AND ErrCode = 'Scrubber Failure'AND Frequency = 1
我有問題SELECT COUNT不同:我需要的答案是6 不同的時間是300秒<在數爲1 我的SQL:如何選擇COUNT DISTINCT?
SELECT COUNT(DISTINCT(cast([Date] as date) + cast([time] as datetime)))
FROM [Table1]WHERE [DATE] = '2013-06-22'
AND ErrCode = 'Scrubber Failure'AND Frequency = 1
修訂
SELECT COUNT(DISTINCT
ROUND(CONVERT(DECIMAL(20, 4),
DATEDIFF(minute,
CONVERT(datetime, '2013-01-01 00:00:00', 120),
CONVERT(datetime, date + ' ' + time, 120)))/5, 0)) n
FROM table1
WHERE date = '2013-06-22'
AND errcode = 'Scrubber Failure'
AND frequency = 1
輸出:
| N | ----- | 6 |
這裏是SQLFiddle演示。
tq用於回覆...呃你正在比較'2013-01-01 00:00:00'(固定日期)。嗯..我想,如果有'2014-06-22'的數據會發生什麼(已經更新模式)。爲什麼你用(/ 5)分開?對於新的模式,答案應該是7. – user2286756
那麼任何日期<= WHERE子句中的日期過濾器的下端可以用作基準日期,並且只需要以分鐘計算時間差。在你的特定例子中,它也可以是'2013-06-22'。 300秒/ 60 = 5分鐘間隔,這就是爲什麼差異除以5.現在這裏更新爲sqlfiddle,日期爲'2014-06-22' http://sqlfiddle.com/#!3/1ebf0/1。結果是7. – peterm
@ user2286756它有幫助嗎? – peterm
你正在使用什麼數據庫系統? –
看起來像[日期]語法的SQL服務器 – Bohemian
亞歷克斯 - SQL Server 2008 – user2286756