簡體   English   中英

在MAX(DATE)左加入

[英]Left Join on MAX(DATE)

我有2張表:交易(a)和價格(b)。 我想從表b檢索在交易日期有效的價格。

表a包含商品交易記錄:Store_type,Date,Article,...

表b包含商品價格的歷史記錄:Store_type,Date,商品,價格

目前我有這個:

Select
a.Store_type,
a.Date
a.Article,
(select b.price
  from PRICES b
  where b.Store_type = a.Store_type
  and b.Article = a.Article
  and b.Date = (select max(c.date)
    from PRICES c
    where c.Store_type = a.Store_type
    and c.Article = a.Article
    and c.date <= a.date)) AS ART_PRICE
from TRANSACTIONS a

它工作得很好,但由於要使用double子查詢,因此似乎要花費很長時間。 可以通過LEFT JOIN進行同樣的操作嗎?

可以嘗試使用以下查詢嗎?

SELECT      a.Store_type, a.Date, a.Article, b.Price
FROM        TRANSACTIONS a
LEFT JOIN   PRICES b ON a.Store_type = b.Store_type
AND         a.Article = b.Article
AND         b.Date = (SELECT   MAX (c.Date) 
                      FROM     PRICES c 
                      WHERE    a.Store_type = c.Store_Type
                      AND      a.Article = c.Article
                      AND      c.Date <= a.Date)

但是,它仍然具有一個子查詢,用於檢索最大日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM