使用Access + Subquery重新格式化数据



我试图在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可以提供帮助吗?我不太担心必须使用多个表/查询才能得到最终结果……只要我能到那里就行!!

从原始数据创建交叉表查询…然后使用另一个查询从交叉表查询选择到另一个表。

您需要将数据JOIN到自身,并从连接的左侧获得t1和x1,从右侧获得t2和x2,诀窍在于连接。

首先,样本数据并没有真正涵盖足够的情况来了解真正需要的是什么,所以我在推断和猜测…

  • 时刻t你记录了一些id的进度x,你想计算出每个间隔
  • 的dx/dt
  • t每次递增,但不一定递增一个
  • t对于每个id都是唯一的
  • x来了就来了。

首先我需要按顺序排列的行

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

bob's your uncle

你会使用sql server吗?或者你只是想用Access/Excel来做到这一点?你可以这样做与TextPad宏,以及如果你想得到真正的简单和创造性…

相关内容

  • 没有找到相关文章

最新更新