2015-04-05 58 views
0

我有兩個表掌握table1和細節table2如何獲得最近的最後的值僅

Table1結構

table1_id integer, 
description varchar(50) 

Table2結構

table2_id integer, 
table1_id integer, 
price numeric(7,2), 
Price_date date 

我需要編寫SQL或一種觀點認爲,這兩個表之間的鏈接,但我想從table2只想得到一個單一的值price字段中使用price_date字段的最近一個字段與table1鏈接,換句話說,我不想從Table2.table1_id字段獲取任何重複字段。我應該如何寫這個SQL?

回答

1

我假設你想要表中的每個table1_id的所有最新條目,而不僅僅是最新的條目(這簡單得多)。

如果你想每table1_id最新的,你首先需要選擇每個ID的最新的記錄,然後查詢記錄的休息,所以是這樣的:

WITH latestprice (
    SELECT table1_id, MAX(price_date) AS price_date 
    FROM table2 
    GROUP BY table1_id 
) 
SELECT t2.table2_id, t2.table1_id, t2.price, t2.price_date 
FROM latestprice l 
INNER JOIN table2 t2 
    ON t2.table1_ud = l.table1_id AND t2.price_date = l.price_date 

如果你也想從信息table1,那麼你需要添加一個額外的連接。請注意,上述查詢有一個缺陷:如果有多個條目table1_idprice_date相同,它會產生多個行和重複項每table_id。如果您想強制執行此操作,則需要爲table1_id, price_date添加一個唯一約束。