1

多くのアイテム トランザクションを一覧表示するテーブルがあります。各アイテムの最後のレコード (最新の日付のレコード) を取得する必要があります。

たとえば、私のテーブルは次のようになります。

Item    Date    TrxLocation
XXXXX   1/1/13   WAREHOUSE
XXXXX   1/2/13   WAREHOUSE
XXXXX   1/3/13   WAREHOUSE

aaaa    1/1/13   warehouse
aaaa    2/1/13   WAREHOUSE

次のようにデータが戻ってくることを望みます。

XXXXX    1/3/13   WAREHOUSE
AAAA     2/1/13   WAREHOUSE

私はこのようなことをしようとしましたが、間違った日付を戻しています

select Distinct ITEMNMBR 
TRXLOCTN,
DATERECD
from TEST
where DateRecd = (select max(DATERECD)
        from TEST)

どんな助けでも大歓迎です。

4

2 に答える 2

2

あなたは正しい軌道に乗っています。サブクエリを相関サブクエリに変更するだけで済みます。これは、外部クエリに何らかのコンテキストを与えることを意味します。サブクエリ ( select max(DATERECD) from TEST) を単独で実行すると、何が得られますか? アイテムに関係なく、テーブル全体で最新の日付である単一の日付を取得します。次のように、ITEMNMBR 列にリンクして、サブクエリを外側のクエリに関連付ける必要があります。

SELECT ITEMNMBR, TRXLOCTN, DATERECD
FROM TEST t
WHERE DateRecd = (
  SELECT MAX (DATERECD) 
  FROM TEST tMax 
  WHERE tMax.ITEMNMBR = t.ITEMNMBR)
于 2013-03-15T19:38:23.153 に答える
0

サブクエリは必要ありません。単一のテーブルをクエリしており、MAX(日付) と GROUP BY アイテムと TrxLocation を選択する必要があります。

SELECT Item, max(DATERECD) AS max_dt_recd, TrxLocation
 FROM test
GROUP BY Item, TrxLocation
/
于 2013-03-15T20:06:08.513 に答える