Ich habe eine Tabelle, die _id, underSubheadId, wefDate, Preis enthalten. Wenn ein Produkt erstellt oder ein Preis bearbeitet wird, wird auch in dieser Tabelle ein Eintrag gemacht. Was ich will, ist, wenn ich ein Datum eingeben, ich den neuesten Preis aller verschiedenen UnderSubheadIds vor dem Zeitpunkt erhalten (oder zu diesem Zeitpunkt, wenn kein Eintrag gefunden)Erhalten Sie den neuesten Preis SQLITE
_id underHeadId wefDate price
1 1 2016-11-01 5
2 2 2016-11-01 50
3 1 2016-11-25 500
4 3 2016-11-01 20
5 4 2016-11-11 30
6 5 2016-11-01 40
7 3 2016-11-20 25
8 5 2016-11-15 52
Wenn ich eingeben 2016.11.20 als Datum ich sollte
bekommen1 5
2 50
3 25
4 30
5 52
ich das Ergebnis mit ROW NUMBER-Funktion in SQL Server erreicht haben, aber ich möchte dieses Ergebnis in SQLite, die keine solche Funktion. Auch wenn ein Datum wie 2016-10-25 (die keine Einträge haben) eingegeben wird, möchte ich den Preis des Datums, das zuerst ist. Wie für 1 erhalten wir Preis als 5 als nächste und der 1. Eintrag ist 2016-11-01.
Dies ist die Abfrage für SQL Server, die gut funktioniert. Aber ich möchte es für Sqlite, die nicht ROW_NUMBER-Funktion haben.
select underSubHeadId,price from(
select underSubHeadId,price, ROW_NUMBER() OVER (Partition By underSubHeadId order by wefDate desc) rn from rates
where wefDate<='2016-11-19') newTable
where newTable.rn=1
Danke
Ich habe gerade diese Abfrage ausgeführt, aber ich bekomme das gleiche Ergebnis wie Select * von t. Alle Zeilen werden zurückgegeben. :(@Gordon Linoff Werfen Sie einen Blick auf http://imgur.com/a/OeMhF –
@RishiChandak. Sind Sie sicher, dass die Korrelationsklausel korrekt ist? –
Ich bin mir nicht sicher. Aber die Abfrage, die Sie vorgeschlagen, gab alle Zeilen zurück Der Bildlink ist im letzten Kommentar enthalten Vielen Dank schon –