我正在尝试重新格式化MS Access中的数据,因为行数超过了Excel可以执行的操作。但是,这是我对子查询的第一次尝试,并且可以在我应该做的事情上提供一些帮助。
我的数据如下所示:
t, id, x
1, 10, 1
1, 20, 5
1, 30, 10
2, 10, 2
2, 20, 7
2, 30, 14
我想把它按照这个顺序进行处理:
id, t1, t2, x1, x2
10, 1, 2, 1, 2
20, 1, 2, 5, 7
30, 1, 2, 10, 14
...
10, 70, 71, 66, 68
等。
提供的数据是距离和时间值 - 所以我想重新格式化上面的内容,然后通过(x2 - x1)/(t2 - t1)计算速度。
这可以帮助Access吗?我不太喜欢不得不使用多个表/查询来达到最终结果......只要我到达那里就可以了!!!
答案 0 :(得分:1)
从原始数据创建交叉表查询...然后使用另一个查询从交叉表查询中选择另一个表。
答案 1 :(得分:0)
你需要JOIN
数据到自己,并从连接的左边得到t1和x1,从右边得到t2和x2,诀窍是在连接中。
首先,样本数据并没有真正涵盖足够的案例,看看真正需要什么,所以我推断和猜测......
首先,我需要顺序行ranked
SELECT
(
SELECT Count(*)
FROM Table1
WHERE [t] < [t1].[t]+1 AND id = t1.id;
) AS Rank
, *
FROM
Table1 AS t1;
调用此Query1和
SELECT
a.id AS id
, a.t AS t1
, b.t AS t2
, a.x AS x1
, b.x AS x2
, (b.x - a.x) / (b.t - a.t) as Speed
FROM
Query1 as a
INNER JOIN
Query1 as b
ON
a.id = b.id
AND (a.rank + 1) = b.rank
和鲍勃是你的叔叔
答案 2 :(得分:0)
你能用sql server吗?或者您只是尝试使用Access / Excel执行此操作?你也可以使用TextPad宏来实现这一点,如果你想要真正简单和有创意......特别是如果行始终按照这个顺序。