私は_id、underSubheadId、wefDate、priceを含むテーブルを持っています。 商品が作成されるか価格が編集されるたびに、この表にもエントリが作成されます。 私が欲しいのは、私は日付を入力した場合、私は日の前に、すべての個別UnderSubheadIdsの最新の価格を取得(またはエントリが見つからない場合は、その日に)最新の価格を入手する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
は私が日付として2016年11月20日を入力した場合であります私は、SQL Server内の行番号の機能を使用して結果を達成しているが、私はそのような機能を持っていないsqliteは、この結果をしたい
1 5
2 50
3 25
4 30
5 52
を取得する必要があります。 また、2016-10-25(エントリがない)のような日付が入力された場合は、最初の価格が欲しいです。 1の場合と同様に、価格は最寄りの5で、1番目のエントリは2016-11-01です。
これは正常に動作しているSQL SERVERのクエリです。しかし、私はそれがROW_NUMBER関数を持たないSqliteのために必要です。
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
これは少しトリッキーですが、ここでは一つの方法であるあなた
私はこのクエリを実行しましたが、Select *からtと同じ結果が得られました。 すべての行が戻されます。 :(@Gordon Linoff 見てくださいhttp://imgur.com/a/OeMhF –
@RishiChandak ...。相関句が正しいと確信していますか? –
わかりませんが、提案したクエリはすべての行を返しました –