这个sql语句该怎么写

nameliumin 2010-09-25 09:39:14
一个表有三个字段,第一个名字,第二个一个事件,第三是时间
要求同一个名字的两个不同事件发生的时间间隔

Name Event Time
N1 E1 T1
N1 E2 T2
N2 E1 T1

怎么找T2-T1?
同一个名字的E1,E2可能不同时有
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
boqiang1988 2010-09-25
  • 打赏
  • 举报
回复
设这个表为T
select t1.Name,datediff(dd,t1.Time,t2.Time)
from T t1,T t2
where t1.Name=t2.Name and t1.Event<>t2.Event
将这个表做了个自连接,就可以得到你要的结果了!
「已注销」 2010-09-25
  • 打赏
  • 举报
回复
是不是你需要的呢?
DROP TABLE tbb
CREATE TABLE tbb
(
[NAME] VARCHAR(10),
[Event] VARCHAR(10),
[Time] datetime
)

INSERT INTO tbb
SELECT 'N1','E1','2010-01-02'
UNION ALL
SELECT 'N1','E2','2010-01-06'
UNION ALL
SELECT 'N2','E1','2010-01-08'

SELECT * FROM tbb t

SELECT [NAME],[Event],[Time],ISNULL(abs(span),0)span
FROM(
SELECT * ,SPAN=(SELECT datediff(dd,T.TIME ,TIME) FROM tbb
WHERE T.NAME=NAME AND T.[Event]<> [EVENT])
FROM tbb t
)M

NAME Event Time span
---------- ---------- ----------------------- -----------
N1 E1 2010-01-02 00:00:00.000 4
N1 E2 2010-01-06 00:00:00.000 4
N2 E1 2010-01-08 00:00:00.000 0

(3 row(s) affected)
nameliumin 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happyflystone 的回复:]

N1会不会超过二条? 如果超过二条时结果如何?
[/Quote]

Name + Event 一样的只有一个
-狙击手- 2010-09-25
  • 打赏
  • 举报
回复
N1会不会超过二条? 如果超过二条时结果如何?

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧