1

増加する日付(ギャップあり)と対応する値の表があります

date        | value
01.02.2012  | 10
02.02.2012  | 11
03.02.2012  | 33
07.02.2012  | 34
08.02.2012  | 13

次のように、日付間の値の差の表を探しています。

02.02.2012 - 01.02.2012  | 11 - 10 = +1
03.02.2012 - 02.02.2012  | 33 - 11 = +22
07.02.2012 - 03.02.2012  | 34 - 33 = +1
08.02.2012 - 07.02.2012  | 13 - 34 = -21

現在、テーブルをExcelにロードしてそこで計算を行っていますが、データベース内でSQLコマンドを使用して取得する方法があると感じています。ありますか?

アップデート。実際にはアクセスをデータベースシステムとして使用していますが、違いがあれば最適なものに切り替えることができます。

4

2 に答える 2

3

DBMS を指定しませんでしたが、これは最新の DBMS のほとんどで動作する ANSI SQL です (希望する出力とは異なりますが、2 つの値の違いは示されます)。

select date, 
       value,
       value - lag(value) over (order by date) as diff
from your_table
于 2012-06-13T07:08:07.043 に答える
1

のような分析関数がアクセスで利用できるとは思わないのでLag、相関サブクエリを使用する必要があります。

SELECT  Date,
        Value,
        NextDate,
        NextValue,
        (NextValue - Value) AS ValueDifference,
        DATEDIFF("D", Date, NextDate) AS DateDifference
FROM    (   SELECT  T.Date,
                    T.Value,
                    (   SELECT  TOP 1 Date
                        FROM    LagTest T1
                        WHERE   T1.Date >  T.Date
                        ORDER BY Date
                    ) AS NextDate,
                    (   SELECT  TOP 1 Value
                        FROM    LagTest T1
                        WHERE   T1.Date >  T.Date
                        ORDER BY Date
                    ) AS NextValue
            FROM    LagTest T
        ) AS T
于 2012-06-13T07:45:40.943 に答える