0

testingと の2 つのフィールドnameを持つテーブルがありcom_dateます。表中の値は以下の通りです。日付形式はmm/dd/yyyy

Name | Com_Date

MC  |  2/1/2013
MC  |  2/2/2013
MC  |  2/5/2013
MR  |  2/4/2013
MR  |  2/5/2013
MU  |  2/1/2013
MU  |  2/2/2013

個別の名前と最新の日付に基づいてレコードを照会する必要があります。名前に基づく最初の個別のレコード。お気に入り:

MC  |  2/5/2013
MR  |  2/5/2013
MU  |  2/2/2013
4

3 に答える 3

2

で集計関数を使用する必要がありMax()ますGROUP BY

select name, max(com_date) MaxCom_Date
from yourtable
group by name

SQL Fiddle with Demoを参照してください。

これは次のように書くこともできますrow_number() over(partition by...):

select name, com_date
from
(
  select name, 
    com_date,
    row_number() over(partition by name order by com_date desc) rn
  from yourtable
) 
where rn =1

デモで SQL Fiddle を参照してください

両方の結果は次のとおりです。

| NAME | MaxCom_Date |
---------------------
|   MC | 02/05/2013  |
|   MR | 02/05/2013  |
|   MU | 02/02/2013  |
于 2013-02-05T10:33:20.773 に答える
1
SELECT name, MAX(date)
 FROM table
 GROUP BY name
 ORDER BY 2;
于 2013-02-05T10:34:05.797 に答える
0

com_date 列が日付形式の場合は、次の操作を実行できます。

SELECT name, TO_CHAR(MAX(com_date), MM/DD/YYYY) FROM testing GROUP BY name ORDER BY name ASC;

日付が日付形式でない場合は、MAX() に貼り付ける前に変換する必要があります

于 2013-02-05T10:38:18.060 に答える