2017-08-01 4 views
1

Ich habe Tabelle wie folgt und es gibt keinen Primärschlüssel darin.Kann nicht eindeutige Datensätze mit COL1 und Sortiert nach 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 

Ich möchte die neueste Zeile für jede Sprache abrufen. Ich kann die 2 Spalten mit der folgenden Abfrage abrufen, aber es enthält nicht die Col_Text-Spalte. Gibt es eine Möglichkeit, dies zu tun? Hinzufügen des Col_Text zur Auswahl von Ergebnissen, die fehlerhaft sind.

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

Was DBMS? Welchen Fehler bekommst du? – mustaccio

+0

ORA-00932: inkonsistente Datentypen: erwartet - bekam CLOB 00932. 00000 - "inkonsistente Datentypen: erwartet% s hat% s" Der Col_text ist vom Typ Clob –

Antwort

3

können Sie row_number() verwenden:

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; 

, dass die ganze Zeile zurückgibt. In Oracle können Sie auch verwenden 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

Warum haben wir Seqnum hinzugefügt? Ich kann dies als eine zusätzliche Spalte im Ergebnis sehen. –

+1

@chitreshsirohi. . . Wählen Sie einfach die gewünschten Spalten in der äußeren Auswahl aus. –

+0

Es löst Syntaxfehler auf H2 db, ")" fehlt –

Verwandte Themen