2017-08-22 5 views
0

ich habe:Wie für jeden Zeitstempel letzte Zeilen erhalten

SELECT * FROM TABLE1 WHERE TIMESTAMP IN (SELECT TIMESTAMP FROM TABLE2 WHERE STATUS='1' AND TIMESTAMP_PROCESSED BETWEEN '2017-01-07-00.00.00.000000' and '2017-01-17-00.00.00.000000') 

habe ich acht Reihen als Ergebnis vier bei TIMESTAMP- ‚2017.01.09 11: 26: 29,434254‘ und den anderen vier für ‚2017- 01-11 15: 09: 51.935322 'mit unterschiedlichen TIMESTAMP_OFFER (Spalte TABELLE1). Wie kann ich nur den letzten TIMESTAMP_OFFER für jeden TIMESTAMP bekommen? Mit anderen Worten, ich brauche nur zwei Zeilen statt acht.

Danke.

UPDATE:

ich diese Frage haben jetzt:

SELECT TIMESTAMP, STATUS, MAX(TIMESTAMP_OFFER) FROM TABLE1 WHERE TIMESTAMP IN (SELECT TIMESTAMP FROM TABLE2 WHERE STATUS='1' AND TIMESTAMP_PROCESSED BETWEEN '2017-01-07-00.00.00.000000' and '2017-01-17-00.00.00.000000') GROUP BY TIMESTAMP, STATUS 

Aber jetzt habe ich mit vier Reihen zur Folge haben (zwei für jeden Zeitstempel), weil ich zwei STATUS-Werte in jedem TIMESTAMP/TIMESTAMP zu bieten haben:

----------------------------------------------------------------------- 
| TIMESTAMP     | STATUS | TIMESTAMP_OFFER    | 
----------------------------------------------------------------------- 
|2017-01-09 11:26:29.434254 | E  | 2017-02-01 16:05:02.221179 | 
----------------------------------------------------------------------- 
|2017-01-09 11:26:29.434254 | P  | 2017-02-01 16:05:02.221179 | 
----------------------------------------------------------------------- 
|2017-01-11 15:09:51.935322 | E  | 2017-02-11 12:00:50.410959 | 
----------------------------------------------------------------------- 
|2017-01-11 15:09:51.935322 | P  | 2017-02-11 12:00:50.410959 | 
----------------------------------------------------------------------- 

In diesem Fall habe ich dies nur brauchen:

----------------------------------------------------------------------- 
| TIMESTAMP     | STATUS | TIMESTAMP_OFFER    | 
----------------------------------------------------------------------- 
|2017-01-09 11:26:29.434254 | E  | 2017-02-01 16:05:02.221179 | 
----------------------------------------------------------------------- 
|2017-01-11 15:09:51.935322 | E  | 2017-02-11 12:00:50.410959 | 
----------------------------------------------------------------------- 

Wie bekomme ich es?

+0

Haben Sie die Max() Funktion versucht? – TinkeringMatt

Antwort

0

Verwenden Sie die MAX() Funktion auf dem TIMESTAMP_PROCESSED und machen Sie einen GROUP BY.

0
SELECT * FROM TABLE1 WHERE TIMESTAMP IN (
SELECT TIMESTAMP FROM TABLE2 WHERE TIMESTAMP_PROCESSED IN 
    (SELECT max(TIMESTAMP_PROCESSED) FROM TABLE2 WHERE STATUS='1' AND TIMESTAMP_PROCESSED BETWEEN '2017-01-07-00.00.00.000000' and '2017-01-17-00.00.00.000000')) 
Verwandte Themen