2014-09-30 20 views
0

從這個問題,下面就SELECT all the newest record distinct keyword with a non null value in one column選擇所有最新的非空記錄可基於另一個表

我現在有一個問題,我有這樣的數據

PRODUCT: 
    id| product | amount| ownershipid 
    1 | ipod | 200 | 2 
    2 | ipod | 250 | 3 
    3 | ipod | 150 | 4 
    4 | apple | 100 | 1 
    5 | apple | 98 | 2 
    6 | apple | 500 | 3 
    7 | itunes | NULL | 1 
    8 | itunes | 50 | 2 
    9 | itunes | NULL | 3 
    10 | itunes | NULL | 4 

OWNERSHIP: 
     ownershipid| start  | end 
     1  | 2011-01-01 | 2011-12-31 
     2  | 2012-01-01 | 2012-12-31 
     3  | 2014-01-01 | 2014-12-31 
     4  | 2013-01-01 | 2013-12-31 

我需要最新的日期範圍每種產品的可用數量。我無法通過所有權來執行訂單,因爲最新數據來自2014年。而不是2013年。OwnershipId是自動增量,我們接受歷史數據。

所以,我的結果應該返回行2,6和8

+1

是由「start」還是「end」定義的「最近期」? – 2014-09-30 16:44:55

回答

0

假設最近被end定義,你可以做一個有點令人費解的加入,以獲得結果;

SELECT p.product, p.amount 
FROM product p JOIN ownership o ON p.ownershipid = o.ownershipid 
JOIN (
    SELECT p.product, MAX(o.end) end 
    FROM product p JOIN ownership o ON p.ownershipid = o.ownershipid 
    WHERE p.amount IS NOT NULL GROUP BY p.product) z 
ON p.product = z.product AND o.end = z.end; 

An SQLfiddle to test with

內部查詢獲取每個項目具有非空數量的最大日期。

外部查詢獲取該時間/產品的金額。

+0

謝謝。這很好用! – 2014-09-30 17:23:08

相關問題