1

私のテーブルには、次のようなデータがあります。

CODE    DATE    PRICE
100     1/1/13  $500
100     2/1/13  $521
100     3/3/13  $530
100     5/9/13  $542
222     3/3/13  $20
350     1/1/13  $200
350     3/1/13  $225

で最新の 2 つのレコードを引き出すクエリを作成することはできますDATEか? かつ、特定のコードに 2 つ以上の日付がある場合のみ。したがって、結果は次のようになります。

CODE    DATE    PRICE
100     5/9/13  $542
100     3/3/13  $530
350     3/1/13  $225
350     1/1/13  $200

次のように、両方の価格/日付を同じ行に入れることができればボーナス ポイント:

CODE    OLD_DATE    OLD_PRICE    NEW_DATE    NEW_PRICE
100     3/3/13      $530         5/9/13      $542
350     1/1/13      $200         3/1/13      $225

ありがとうございました!!!

4

2 に答える 2

0

最近のデータへのアクセス

最近のデータにアクセスするには、 を使用しますTOP 2。テーブルのデータを逆にして、上位 2 を選択します。ZYX から ABC を開始し、ZY を提供する TOP 2 を選択するのと同じように。

SELECT TOP 2 * FROM table_name ORDER BY column_time DESC;

このように、表を逆にして、上から最新の 2 つを選択します。

テーブルに参加する

2 つの列を結合し、そこから結果を作成するには、次のような JOIN (INNER JOIN; 私はこれを好みます) を使用できます。

SELECT TOP 2 * FROM table_name INNER JOIN table_name.column_name ON 
table_name.column_name2

このようにして、一方の列の値が両方のテーブルの他方の列の値と一致する両方のテーブルを結合します。

これにループを使用しforてそれらの値を選択するか、ループ内でこれを使用してforeachそれらの値を取り出すことができます。

私のおすすめ

私の最善の方法は、最初に日付を使用して注文されたデータを選択することです。

次にforeach()、そのデータを書き込むループ内で、その時間の残りのデータを選択します。そして、そのループ内に記述します。

コード (column_name) は気にしません

を使用してクエリを参照する場合はORDER By Time Desc、 などのコードを使用しなくなりますWHERE Code = value。そして、最新のもののコードを取得します。列が本当に必要な場合は、codeand if else ブロックを使用してフィルターで除外できます。

参照:

http://technet.microsoft.com/en-us/library/ms190014(v=sql.105).aspx (内部結合)

http://www.w3schools.com/sql/sql_func_first.asp (トップ; SQL Server クエリを確認してください)

于 2013-10-23T19:53:28.387 に答える