0

特定の製品の価格履歴を示すテーブル (price_history) があります。現在の価格 (最新の日付の場合) と直前の価格 (最新の日付の直前の日付の場合) を表示するクエリを作成したいので、本質的には古い価格と新しい価格です。以下にテーブルの例を示します。

| historyid | productcode | optionid | price | date       |
+-----------+-------------+----------+-------+------------+
|      9635 |      254256 |        1 | 42.95 | 1286494361 |
|      9690 |      254256 |        1 | 35.00 | 1286495188 |
|      9727 |      254256 |        1 | 47.95 | 1287529777 |
|      9728 |      254256 |        1 | 40.00 | 1288902624 |

取得したいものは次のとおりです。

| productcode | optionid | Old price |  New Price |  Date      |
+-------------+----------+-----------+------------+------------+
|      254256 |         1|     47.95 |  40.00     | 1288902624 |

必要な結果を得る方法がわかりません。どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

0

以下のデータを使用する (適切にフォーマットされた日付):

+-----------+-------------+----------+-------+------------+
| historyid | productcode | optionid | price | validdate  |
+-----------+-------------+----------+-------+------------+
|      9660 |      254256 |        1 | 35.00 | 2013-09-14 |
|      9727 |      254256 |        1 | 47.95 | 2013-09-15 |
|      9728 |      254256 |        1 | 40.00 | 2013-09-16 |
|      9635 |      254256 |        1 | 42.95 | 2013-09-13 |
+-----------+-------------+----------+-------+------------+

最新の日付の価格と前日の価格を取得するには、次を使用します。

select a.*, b.price as oldprice
from testing a 
left join testing b 
    on a.validdate = adddate(b.validdate, 1) 
order by a.validdate desc
limit 0, 1;

+-----------+-------------+----------+-------+------------+----------+
| historyid | productcode | optionid | price | validdate  | oldprice |
+-----------+-------------+----------+-------+------------+----------+
|      9728 |      254256 |        1 | 40.00 | 2013-09-16 |    47.95 |
+-----------+-------------+----------+-------+------------+----------+
于 2013-09-17T03:19:57.743 に答える