读书人

SQL Server流水时间统计解决方法

发布时间: 2012-03-20 14:01:11 作者: rapoo

SQL Server流水时间统计
各位好,小弟目前需要做一个查询统计,使用SQL 2005,描述如下

SQL code
两个表A表是流水表,B表是基础表A表IP               时间192.168.1.1     2012-02-01 08:00:00192.168.1.3     2012-02-01 08:00:01192.168.1.3     2012-02-01 08:01:00192.168.1.1     2012-02-01 08:01:00192.168.1.1     2012-02-01 08:06:00192.168.1.3     2012-02-01 08:07:00192.168.1.3     2012-02-01 09:01:00192.168.1.4     2012-02-01 09:07:00B表IP            开始时间1               结束时间1         开始时间2            结束时间2192.168.1.1   9:00                    11:30              2:00                 5:30192.168.1.2   9:00                    11:30              2:00                 5:30192.168.1.2   9:00                    11:30              2:00                 5:30192.168.1.4   9:00                    11:30              2:00                 5:30192.168.1.5   9:00                    11:30              2:00                 5:30假如现在的时间是早上10:00,我想查询出每个IP在【开始时间1 、结束时间1、开始时间2和结束时间2之间】时间差大于5分钟的数据查询结果IP                开始时间                 结束时间           差距192.168.1.1    2012-02-01 09:00:00       2012-02-01 10:00:00   60192.168.1.2    2012-02-01 09:00:00       2012-02-01 10:00:00   60192.168.1.3    2012-02-01 09:01:00       2012-02-01 10:00:00   59192.168.1.4    2012-02-01 09:00:00       2012-02-01 09:07:00   7192.168.1.4    2012-02-01 09:07:00       2012-02-01 10:00:00   53192.168.1.5    2012-02-01 09:00:00       2012-02-01 10:00:00   60首次发帖,感谢阅览


[解决办法]
SQL code
CREATE TABLE #TestA(    ip NVARCHAR(20),    dates DATETIME    )INSERT INTO #TestA values('192.168.1.1','2012-02-01 08:00:00')INSERT INTO #TestA values('192.168.1.3','2012-02-01 08:00:01')INSERT INTO #TestA values('192.168.1.3','2012-02-01 08:01:00')INSERT INTO #TestA values('192.168.1.1','2012-02-01 08:01:00')INSERT INTO #TestA values('192.168.1.1','2012-02-01 08:06:00')INSERT INTO #TestA values('192.168.1.3','2012-02-01 08:07:00')INSERT INTO #TestA values('192.168.1.3','2012-02-01 08:01:00')INSERT INTO #TestA values('192.168.1.4','2012-02-01 08:07:00')CREATE TABLE #TestB(    ip NVARCHAR(20),    beginDate1 NVARCHAR(20),    endDate1 NVARCHAR(20),    beginDate2 NVARCHAR(20),    endDate2 NVARCHAR(20)        )INSERT INTO #TestB VALUES ('192.168.1.1','9:00','11:30','2:00','5:30')INSERT INTO #TestB VALUES ('192.168.1.2','9:00','11:30','2:00','5:30')INSERT INTO #TestB VALUES ('192.168.1.3','9:00','11:30','2:00','5:30')INSERT INTO #TestB VALUES ('192.168.1.4','9:00','11:30','2:00','5:30')INSERT INTO #TestB VALUES ('192.168.1.5','9:00','11:30','2:00','5:30')SELECT * FROM #TestASELECT * FROM #TestBDROP TABLE #TestADROP TABLE #TestB测试数据都写好了,才发现需求很2,先贴这,等楼主需求讲明白了。方便大家。楼主,你检查一下,是不是上面的数据随便写的没写出点规律啊,哪个是A表中如何判断哪个是开始时间,哪个是结束时间啊。
[解决办法]

读书人网 >SQL Server

热点推荐