0

読み込もうとした表

テーブル

ここでは、最新の TransactionDate を持ち、StackHistoryID でグループ化された行を読み込もうとしています。

だから私は最初に "order by TransactionDate desc" を使用することを考えました。その後、最新の行が一番上になり、その後 group by を使用すると、私が望んでいたものが得られます。しかし、orderbyを使用した後、groupbyを使用することはできません。だから私はここで打った、単一のクエリを使用して私が望んでいたものを取得する方法はありますか.

アップデート:

select ID, Max(TransactionDate) from Stacks group by StackHistoryID

ここに画像の説明を入力

ただし、この出力の最初の行の ID は 9 である必要があります。

4

2 に答える 2

1

See SQLFiddle

MAX() を使用

select StackHistoryID, Max(TransactionDate)
from Stacks
group by StackHistoryID;

ID を使用した単純なクエリでは、MAX を使用します。(ID が増分の場合、つまり、ID が大きいほど日付が小さいことはありません):

select Max(ID),StackHistoryID, Max(TransactionDate)
from Stacks
group by StackHistoryID;

そして、ID が日付と一緒にインクリメンタルでない場合、つまり、ID が高くても日付が低くてもかまいません...次に、次のようなことができます。

select alls.ID, s.StackHistoryID, s.TransactionDate
from
(
  select StackHistoryID as StackHistoryID, 
         Max(TransactionDate) as TransactionDate
  from stacks
  group by StackHistoryID desc 
) s, Stacks alls
where
  alls.StackHistoryID = s.StackHistoryID
  and
  alls.TransactionDate = s.TransactionDate
order by StackHistoryID
;

See SQLFiddle

于 2013-09-06T06:59:02.647 に答える
0

stackhistoryidすべてのデータをtransactiondate並べ替えたい場合。それから行きます。

select * from stacks order by StackHistoryID, TransactionDate desc;

最新の日付のみが必要な場合は、によって指定された結果に進みます@MrSimpleMind

于 2013-09-06T07:02:27.533 に答える