所以我有几个类似于这样结构的表:
Run ([RunID], [PlayerID], [Score])
Jump ([ID], [RunID], [Time], [Type])
有 4 种“类型”的时间 2“向上”和 2“向下”。
我需要在给定的运行中获得“上升”和“下降”之间的时间。
基本上,在进行“跳跃”时的“奔跑”期间,我记录了一个上升时间,并在相应的着陆记录了一个下降(每次运行只有一对)。在“跑步”结束时,我需要显示“在空中”的总时间,以及每次跳跃的时间。我在想最好的方法是转储到具有以下结构的临时表中:
@tempJump ([RunID], [TimeUp], [TimeDown])
然后我将拥有所有需要的信息来计算和填充必要的字段。
到目前为止,我已经尝试了从简单的选择/连接到可怕的游标的所有方法,但是我无法将“ups”与相应的“downs”匹配并将它们放入具有正确“run”的临时表中。
关于实现这一目标的最佳方法的任何想法?
编辑:
示例架构:
CREATE TABLE Run
([RunID] int, [PlayerID] int, [Score] int)
;
INSERT INTO Run
([RunID], [PlayerID], [Score])
VALUES
(1, 1, 1000),
(2, 1, 1100),
(3, 1, 800),
(4, 2, 1500),
(5, 1, 900)
;
CREATE TABLE Jump
([JumpID] int, [RunID] int, [Time] datetime, [Type] int)
;
INSERT INTO Jump
([JumpID], [RunID], [Time], [Type])
VALUES
(1, 1, '2013-08-13 18:00:04', 1),
(2, 1, '2013-08-13 18:00:10', 2),
(3, 2, '2013-08-13 18:02:15', 1),
(4, 2, '2013-08-13 18:02:45', 4),
(5, 3, '2013-08-13 18:04:20', 3),
(6, 3, '2013-08-13 18:05:01', 2),
(7, 4, '2013-08-13 18:10:12', 3),
(8, 4, '2013-08-13 18:11:25', 4),
(9, 5, '2013-08-13 18:15:00', 1),
(10, 5, '2013-08-13 18:25:20', 4)
;
CREATE TABLE JumpType
([TypeID] int, [Description] varchar(12))
;
INSERT INTO JumpType
([TypeID], [Description])
VALUES
(1, 'UpPlatform'),
(2, 'DownPlatform'),
(3, 'UpBoost'),
(4, 'DownBoost')
;
查询的预期输出将是一个类似于以下内容的临时表:
RunID PlayerID TimeUp TimeDown
1 1 '2013-08-13 18:00:04' 2013-08-13 18:00:10