查询相同记录的版本以查找差异

时间:2013-11-07 17:30:00

标签: sql ms-access pivot

所以我有这个访问数据库表,它基本上每周存储大致相同的数据集。但是,我需要指出的可能存在细微差别。我该如何查询?在excel中我会创建一个数据透视表,并检查值,但使用动态查询肯定会有更少的时间吗?

示例表:

[Version_Date] |   [ItemNumber]    |  [Weight]
Nov 11 2013    |         1         |     3
Oct 29 2013    |         1         |     3
Nov 11 2013    |         2         |     4
Oct 29 2013    |         2         |     3
Nov 11 2013    |         3         |     2
Oct 29 2013    |         3         |     5

查询应该返回一个像这样的列表

[ItemNumber]  | [Oct 29 2013]  |   [Nov 11 2013  |   [Delta]
1             |          3     |        3        |       0
2             |          3     |        4        |       1
3             |          5     |        3        |      -2

提前感谢任何帮助/提示。

1 个答案:

答案 0 :(得分:1)

对于[ExampleTable]中的样本数据

Version_Date  ItemNumber  Weight
------------  ----------  ------
2013-11-11             1       3
2013-10-29             1       3
2013-11-11             2       4
2013-10-29             2       3
2013-11-11             3       2
2013-10-29             3       5

查询

SELECT 
    t1.ItemNumber, 
    t2.Version_Date AS Previous_Date, 
    t2.Weight AS Previous_Weight, 
    t1.Version_Date, 
    t1.Weight, 
    t1.Weight - t2.Weight AS Delta
FROM
    ExampleTable t1
    INNER JOIN
    ExampleTable t2
        ON t2.ItemNumber = t1.ItemNumber
            AND t2.Version_Date < t1.Version_Date

返回

ItemNumber  Previous_Date  Previous_Weight  Version_Date  Weight  Delta
----------  -------------  ---------------  ------------  ------  -----
         1  2013-10-29                   3  2013-11-11         3      0
         2  2013-10-29                   3  2013-11-11         4      1
         3  2013-10-29                   5  2013-11-11         2     -3

这样可以为您提供数字,您只需将它们放入报告中即可使它们看起来漂亮。