我有问题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