1

これでMicrosoft SQLで数時間苦労しました。

私は2つのテーブルを持っています。

Table1
ID | STOCK | STATUS
-----------------------------
1  | 1     | Out
2  | 1     | In
3  | 1     | Out
4  | 2     | Out
5  | 2     | In

Table2
ID | DATE
---------------
1  | 2013-07-01
2  | 2013-07-02
3  | 2013-07-03
4  | 2013-07-01
5  | 2013-07-02

最新のDATEとSTATUSで最新のSTOCKを取得したい

-> 結果は

結果表

ID| STOCK | STATUS | DATE
-------------------------------
3 | 1     | Out    | 2013-07-03
5 | 2     | In     | 2013-07-02

私は次のことをしました:

SELECT Table1.*, Table2.* FROM Table1, Table2 WHERE Table1.ID=Table2.ID

これはテーブルを結合しますが、5 つのレコードすべてを提供します。MAX()だから私はそのように機能を使うと思った

SELECT Table1.*, MAX(Table2.ID),Table2.Date  FROM Table1, Table2 WHERE Table1.ID=Table2.ID GROUP BY Table2.Date

ただし、これはクエリ ウィンドウでは実行されません。

4

2 に答える 2

1
SELECT t1.id, t1.stock, t1.status, t5.mdate
FROM Table1 t1
inner join Table2 t2 on t1.id = t2.id
inner join
(
   select t3.stock, max(t4.date) as mdate
   from table1 t3
   inner join Table2 t4 on t3.ID = t4.ID
   group by t3.stock
) t5 on t5.stock = t1.stock and t5.mdate = t2.date

SQLFiddle デモ

于 2013-07-11T17:19:38.060 に答える
0

これを使って:

Select t1.id,t1.stock,t1.status,t2.date
FROM Table1 as t1,Table2 as t2
Where t1.id=t2.id
Order By t2.date DESC
LIMIT 1
于 2013-07-11T17:07:53.190 に答える