2016-11-29 111 views
1

我有一個包含_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日的日期我應該得到

1 5 
2 50 
3 25 
4 30 
5 52 

我在SQL Server中使用行數函數來實現的結果,但我想這個結果SQLite中不具備這樣的功能。 此外,如果2016-10-25(沒有條目)的日期被輸入,我想要第一個日期的價格。 喜歡1,我們會得到價格爲5最近和第一項是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 

謝謝

回答

1

這是一個有點棘手,但這裏有一個辦法:

select t.* 
from t 
where t.wefDate = (select max(t2.wefDate) 
        from t t2 
        where t2.underSubHeadId = t.underSubHeadId and 
         t2.wefdate <= '2016-11-20' 
       ); 
+0

我剛剛運行了這個查詢,但是我得到的結果與Select * from t相同。 返回所有行。 :(@Gordon Linoff 看一看http://imgur.com/a/OeMhF –

+0

@RishiChandak ...你確定這個關聯子句是正確的嗎? –

+0

我不確定,但是你建議的查詢返回了所有行。 已經有了 –

0

選擇underHeadId,MAX(PRICE) 在t 其中wefDate < =「2016- 11-20「 group by underHead;

+0

I dont wan t日期的最大價格,但是從該日期開始的最後價格輸入。 –

+0

我懷疑你是否理解sql。 –

+0

你知道,當我看到你的這個問題時,這就是我對你的感受。 Dude此查詢將返回該日期之前的UnderHeadId的最大價格。但這不是我想要的值,我想要的是該日期之前該UnderHead的最新更新值。 –