2017-08-01 5 views
1

以下のようなテーブルがあり、その中に主キーはありません。COL1とCOL2でソートされた別個のレコードを取得できません

COL_Date  Col_Text Col_Lang 
23-July-17  Hello  de 
23-July-17  Hello  en 
19-July-17  Hello  de 
18-July-17  Hello  en 
17-July-17  Hello  es 

言語ごとに最新の行を取得したいとします。次のクエリを使用して2つの列を取得できますが、Col_Text列は含まれていません。これを行う方法はありますか?選択するCol_Textを追加するとエラーが発生します。

SELECT DISTINCT Col_Lang, MAX(COL_Date) 
FROM table1 
GROUP BY Col_Lang 
ORDER BY MAX(COL_Date) DESC, Col_Lang 
+0

どのようなDBMSですか?どのようなエラーが出ますか? – mustaccio

+0

ORA-00932:一貫性のないデータ型:予期した - CLOB 00932. 00000 - "矛盾したデータ型:%sがあります。" Col_textの型はClobです –

答えて

3

あなたはrow_number()を使用することができます:行全体を返し

select COL_Date, Col_Text, Col_Lang 
from (select t1.*, 
      row_number() over (partition by col_lang order by col_date desc) as seqnum 
     from t1 
    ) t1 
where seqnum = 1; 

を。オラクルでは、keepを使用することもできます。

SELECT Col_Lang, MAX(COL_Date), 
     MAX(col_text) KEEP (DENSE_RANK FIRST ORDER BY Col_date) as col_text 
FROM table1 
GROUP BY Col_Lang 
ORDER BY MAX(COL_Date) DESC, Col_Lang; 
+0

なぜseqnumが追加されましたか?私はこれを結果の追加の列として見ることができます。 –

+1

@chitreshsirohi。 。 。外側の 'select'で望む列を選択するだけです。 –

+0

H2データベースに構文エラーがスローされる、 ")"が見つかりません –

関連する問題