我有一个包含以下有序数据的表:
Employee TimeX TimeY Type Date
-----------------------------------------------
1 0800 0900 'A' 1/1/2013
1 0930 1300 'B' 1/1/2013
1 0600 0845 'A' 1/2/2013
1 0925 1300 'B' 1/2/2013
1 1100 1400 'A' 1/3/2013
1 0500 0700 'A' 1/4/2013
1 0715 0800 'B' 1/4/2013
我需要的是为每个匹配对计算 A 型 TimeY 和 B 型 TimeX 之间的分钟数。由于我无法控制的设计,我无法将“A”和“B”链接在一起,只能按时间戳顺序连接。可悲的是,不,我不能保证所有“A”类型的行后面都会跟着“B”类型的行,所以任何“A”后面没有“B”的行都应该被忽略。但是,没有一个“B”会跟随另一个“B”。基本上,这是我想看到的:
Employee Duration
---------------------
1 30
1 40
1 15
有没有办法轻松做到这一点?我在这里找到的最接近的解决方案涉及加入日期,但这在这种情况下不起作用。我在下午晚些时候想出的唯一可能的解决方案过于复杂,而且没有成功。
编辑:感谢您的回复!这是一些令人印象深刻的 SQL 争论!我选择了 Marc 的答案,因为它是最容易阅读的,但感谢 Gordon 为 Marc 的答案提供了灵感,并感谢 Nenad 为我所尝试的路线所做的努力。