2017-08-08 2 views
1

So habe ich eine Tabelle, wo gibt es eine Liste von Werten, die ich nach Datum bestellen muss und ignorieren Sie die Zeilen, wo die Nummer größer als die vorherige Zahl ist. Nehmen Sie die folgende Tabelle:Ignorieren wertsteigernden Zeilen in Oracle11

Date   Value 
01/01/2017  10 
01/02/2017  9 
01/03/2017  8 
01/04/2017  10//Ignore this because previous entry is less(8<10) 
01/05/2017  9... 

Also, was ich, was ist, wenn ich ein wählen Sie tun, um zurückzukehren:

10 
9 
8 
9 

Ist das auch möglich, nur eine Abfrage mit?

Vielen Dank im Voraus für jede Hilfe.

+0

Also im Grunde suchen Sie für längsten Trend? Bitte beschreiben Sie, was Sie erreichen möchten. – lad2025

+0

Nein möchte nur Zeilen ignorieren, wo der vorherige Eintrag weniger – Maxqueue

+0

Beide unter Lösungen funktioniert. Vielen Dank, dass Sie alle Ehrfurcht haben – Maxqueue

Antwort

2

Ich glaube, Sie lag() wollen:

select value 
from (select t.*, lag(value) over (order by date) as prev_value 
     from t 
    ) t 
where prev_value is null or prev_value > value; 
1

könnten Sie verwenden LAG:

WITH cte AS (
    SELECT *, LAG(Value,1,0) OVER(ORDER BY Date) AS prev 
    FROM your_table 
) 
SELECT * 
FROM cte 
WHERE Value > prev; 
Verwandte Themen