2013-08-12 92 views
1

一個記錄和日期得到的價格這是我的代碼:查詢到從另一個

select row_number() over (order by cte3.update desc) as row_num, 

      (select cte3.update from last_two_items 
      where idOrder = 1 and 
      cte3.toy_id = toy_id 
      ) as update, 

      cte3.price_previous as price_previous, 
      cte3.price_current as price_current, 
      cte3.id as id, 
      cte3.toy_id as toy_id 

    from last_two_items as cte3 
    where idOrder = 2 

我有一個名爲last_two_items臨時表。該臨時表有幾列:老價格,新的價格,更新的日期,idOrder等

它看起來像這樣:

old_price new_price date of update    idOrder   toy_id 
0   0.16   2013-08-06 10:03:41.700 1    123 
0.16  0.08   2013-08-06 10:02:28.850 2    123 

由於從我查詢的結果我想獲得舊價格以及idOrder爲2的記錄的新價格,而idOrder = 1的記錄的更新日期。這兩個記錄的玩具是相同的。

然而,隨着代碼我有(從這個問題開始的代碼),我只能取得idOrder紀錄= 2

如何做到這一點?

回答

2

我認爲問題在於,您不會給您的表格提供正確的標籤,這會造成一些混淆。試試這個:

select row_number() over (order by cte3.update desc) as row_num, 

     (select innerQuery.update from last_two_items as innerQuery 
     where innerQuery.idOrder = 1 and 
     innerQuery.toy_id = cte3.toy_id 
     ) as update, 

     cte3.price_previous as price_previous, 
     cte3.price_current as price_current, 
     cte3.id as id, 
     cte3.toy_id as toy_id 

from last_two_items as cte3 
where idOrder = 2 
0

儘管它的工作,我建議用另一種方法:

select lti2.old_price, lti2.new_price, lti1.date_of_update 
from last_two_items lti1 
left join last_two_items lti2 
where lti1.idOrder = 1 and lti2.idOrder = 2 

相當容易的事情,而不子選擇。