0

テーブルを次のようにします。

  Product ID    |   Date of Sale  | Time of Sale  |   Buyer ID  | ... 
------------------------------------------------------------------
       1        |    2019-01-09   |     22:21     |     12      | ... 
       1        |    2019-01-09   |     9:44      |     13      | ... 
       1        |    2019-01-03   |     10:32     |     11      | ... 
       2        |    2019-01-08   |     14:51     |     55      | ... 
       2        |    2019-01-02   |     11:20     |     10      | ... 
       .        |        .        |       .       |      .      | ... 
       .        |        .        |       .       |      .      | ... 
       .        |        .        |       .       |      .      | ... 

最後に購入した商品の行を表示するビューを作成したいと思います。そうは言っても、それは次の表になります。

  Product ID    |   Date of Sale  | Time of Sale  |   Buyer ID  | ... 
------------------------------------------------------------------
       1        |    2019-01-09   |     22:21     |     12      | ... 
       2        |    2019-01-08   |     14:51     |     55      | ... 
       .        |        .        |       .       |      .      | ... 
       .        |        .        |       .       |      .      | ... 
       .        |        .        |       .       |      .      | ... 

コードの試みを喜んで提供しますが、実際の解決策とはかけ離れているため、この質問には何も追加しません。ただし、インターネットで数分間広範囲に検索しました。私はそれが関数で行われなければならないことを知っています。

4

1 に答える 1

2

1 つの方法はrow_number()次のとおりです。

select t.*
from (select t.*,
             row_number() over (partition by product_id order by date_of_sale desc, time_of_sale desc) as seqnum
      from t
     ) t
where seqnum = 1;

通常、このような状況では、相関サブクエリをお勧めします。ただし、日付/時刻が 2 つの列に分割されているため、ロジックは少し面倒です。datetime列にデータ型を使用する方が理にかなっています。

于 2019-11-27T23:29:57.523 に答える