sql查询同一个表中id相同的两条数据的时间差

只有一个表,phone statedate salenum
15125462562 2011-07-06 12:22:22 A001
15465236150 2011-07-06 12:23:55 A001
15125402154 2011-07-06 12:24:22 A002
15465032510 2011-07-06 12:50:55 A002
salenum相同的两条算一笔业务,我想要一笔业务中的两条数据的statedate小于两分钟的条数!
自己解决了,谢谢哥几个了!~

第1个回答  2011-07-14
SELECT COUNT(*)
FROM
(SELECT SALENUM,
MAX(DECODE(RN,1,STATEDATE)) END_TIME,
MAX(DECODE(RN,2,STATEDATE)) STAT_TIME
FROM
(SELECT PHONE,
STATEDATE,
SALENUM,
RANK()OVER(PARTITION BY SALENUM ORDER BY STATEDATE DESC) RN
FROM TABLE_NAME)
GROUP BY SALENUM )
HAVING DATEDIFF(MINUTE,END_TIME,STAT_TIME)< 2
这个应该能够满足,不知道是否有语法错误!好久没用SQL 如果有麻烦你调试下!
第2个回答  2011-07-14
select count(*)
from (
select salenum,min(a.statedate) as minstatedate,max(a.statedate) as maxstatedate
from A
) as t1
where datediff(minute,t1.minstatedate,t1.maxstatedate) > 2
第3个回答  2011-07-14
请问salenum都是两条两条的吗?
如果是的话。这样试试
SELECT COUNT(*)
FROM TALBE
GROUP BY salenum
HAVING DATEDIFF (minute, MIN( statedate),MAX(statedate)) < 2
第4个回答  2011-07-15
SELECT a.salenum,MAX(a.statedate),MIN(a.statedate) FROM testa a
GROUP BY a.salenum
HAVING (MAX(statedate)-MIN( statedate))*60*24<2;
第5个回答  2011-07-14
假设表1,表2的字段1是相同的,则: select a.字段1a.字段n,b.字段1b.字段n from 表1 a,表2 b where a.字段1=b.字段1 不

sql查询同一个表中id相同的两条数据的时间差
SELECT COUNT(*)FROM (SELECT SALENUM,MAX(DECODE(RN,1,STATEDATE)) END_TIME,MAX(DECODE(RN,2,STATEDATE)) STAT_TIME FROM (SELECT PHONE,STATEDATE,SALENUM,RANK()OVER(PARTITION BY SALENUM ORDER BY STATEDATE DESC) RN FROM TABLE_NAME)GROUP BY SALENUM )HAVING DATEDIFF(MINUTE,END_TIME...

sql语句如何查询两个值之间的差?
1、首先在桌面上,点击“Management Studio”图标。2、然后在该界面中,点击左上角“新建查询”选项。3、之后在该界面中,输入SQL语句“select MoneyA - MoneyB from test;”。4、最后在该界面中,显示两个值之间的差。

sql语句怎么实现表中同一组别 每两次登记时间之差的平均值?
1.计算每一笔与前一次的时间差(第一笔将会算不出时间差)2.对时间差取平均值 step1可以采取function实现 传入组,登录时间 依据组及登录时间查找最近一次登录时间(需小於本次登录时间),计算时间差返回 注意各组第一笔资料,将查找不到上次登录时间,需控制返回-1 step2针对step1查询出的结果,做...

sql语句如何查询两个值之间的差?
create table [tb]([ID] int,[日期] datetime,[数量] int)insert [tb]select 1,'2009-1-1',10 union all select 2,'2009-1-2',12 union all select 3,'2009-1-3',13 go--1 测试 select a.[ID],a.[日期],a.[数量],增加额=isnull(a.[数量]-b.[数量],0) ---建议把null...

sql server查询相同主键的不同时间对应数据的差值
1、根据PK,为每条记录生成RowNumber() -->假定进入临时表#Data SELECT RowNumber() OVER (PARTITION BY BuyerID ORDER BY CreateTime) AS RowNo INTO #Data FROM TableX 2、对此表进行自连接,条件为RowNo相差1 SELECT D1.BuyerID ,D1.CarMoney - D2.CarMoney AS [差价],...FROM #Data ...

怎么查询两个时间相差多少秒?
ORACLE中获得两个时间相差的秒数有以下方法:一、常规方法:1、创建表 create table t_timestamp (id number, t1 timestamp, t2 timestamp);2、插入数据 insert into t_timestamp values (1, to_timestamp('20120615233324', 'yyyymmddhh24miss'),to_timestamp('20120619152354', 'yyyymmddhh24miss...

求一个SQL语句,要求在表中2个列名相同的情况下 查询其中一个列内相差时...
求一个SQL语句,要求在表中2个列名相同的情况下 查询其中一个列内相差时间小于30天的所有记录 select * from table1 a left join table2 b on a.patient_id = b.patient_id and a.exec_cn = b.exec_cn and abs(datediff(day,a.happen_date,b.happen_date)) < 30 ...

求一句sql, 筛选同一个表中同一个字段相差小于14天的值
a.riqi AS riqi1 ,b.id AS id2 ,b.riqi AS riqi2 FROM test a ,test b WHERE a.NAME = b.NAME AND ABS(DATEDIFF(d, a.riqi, b.riqi)) <= 14 AND a.riqi <> b.riqi AND a.id = CASE WHEN a.id > b.id THEN a.id ELSE b.id END ORDER BY a.NAME ...

sql查询按两个字段查询重复记录
select from shiyan003 a where exists (select 1 from (select xm, sfzhm from shiyan003 group by xm, sfzhm having count(*) > 1) s where s.xm = a.xm and s.sfzhm = a.sfzhm)

SQL查询语句,怎样查询重复数据
1、第一步,打开数据库,并创建一个包含重复数据的新用户表,见下图,转到下面的步骤。2、第二步,执行完上面的操作之后,输入如下红框中的SQL语句,然后单击运行按钮,以查看数据库中用户表中的重复数据,见下图,转到下面的步骤。3、第三步,执行完上面的操作之后,查找出了具有重复名称的数据,见...

相似回答