首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个SQL疑难有关问题请问

2013-03-26 
一个SQL疑难问题请教有张表,数据如下IDNOTIME3012010-03-12 09:18:15.0004012010-03-12 09:19:17.07750220

一个SQL疑难问题请教
有张表,数据如下
ID      NO      TIME
3012010-03-12 09:18:15.000
4012010-03-12 09:19:17.077
5022010-03-12 09:19:33.857
6012010-03-12 09:30:43.733
7022010-03-12 13:10:12.123
8042010-03-17 13:46:25.263
9052010-03-17 13:48:44.967
1004      2010-03-17 13:48:47.107
11012010-03-17 13:48:48.937
no 为通道序号,Time为通过通道的时间,当相同通道的时间间隔超过15分钟,表示此通道关闭,即通过Id:4与Id:6可以判断01关闭1次。需要统计每个通道每天开放的次数。请问这个SQL如何写?

[解决办法]
这样???

if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (ID int,NO nvarchar(4),TIME datetime)
insert into [TB]
select 3,'01','2010-03-12 09:18:15.000' union all
select 4,'01','2010-03-12 09:19:17.077' union all
select 5,'02','2010-03-12 09:19:33.857' union all
select 6,'01','2010-03-12 09:30:43.733' union all
select 7,'02','2010-03-12 13:10:12.123' union all
select 8,'04','2010-03-17 13:46:25.263' union all
select 9,'05','2010-03-17 13:48:44.967' union all
select 10,'04','2010-03-17 13:48:47.107' union all
select 11,'01','2010-03-17 13:48:48.937'

WITH TT
AS(
select *,ROW_NUMBER()OVER(PARTITION BY NO ORDER BY id) AS num from [TB])


SELECT A.id,A.no,A.TIME 
FROM TT A
INNER JOIN TT B ON A.NO = B.NO AND A.num = b.num+1
WHERE DATEDIFF(mi,b.TIME,A.TIME)  >15
ORDER BY A.NO,A.TIME

/*
idnoTIME
11012010-03-17 13:48:48.937
7022010-03-12 13:10:12.123*/

热点排行
Bad Request.