2014-02-22 35 views
0

我正在重新發布此問題。我已經清理了SQL,但仍有一些重複的結果。我需要爲每個位置的每個itemnum找到最新的數據。下面是我有:更難以僅返回MS查詢中的最新數據

SELECT invbalances.itemnum, 
invbalances.curbal, 
inventory.maxlevel, 
inventory.minlevel2, 
inventory.sstock, 
inventory.deliverytime, 
invbalances.location, 
inventory.category 
FROM MX7PROD.dbo.invbalances invbalances, 
MX7PROD.dbo.inventory inventory 
WHERE invbalances.itemnum = inventory.itemnum 
AND invbalances.location = inventory.location 
AND ((inventory.category<>'cstk' 
And inventory.category<>'nore' 
And inventory.category<>'sp') 
AND (invbalances.itemnum Not Like '%n%')) 
ORDER BY invbalances.itemnum 
+0

在解釋構成「最新」數據行的邏輯之前,沒有人能回答這個問題。換句話說,對於每個位置的每個itemnum,X的最高值。不幸的是,只有你知道X是什麼。 –

回答

0

假設「最新數據」由最高curbal值在每個位置每個itemnum這應該工作確定:(它似乎是你達到這個結論,你問這是最後一次問題)

SELECT invbalances.itemnum, 
     invbalances.curbal, 
     inventory.maxlevel, 
     a_inventory52.minlevel, 
     inventory.sstock, 
     inventory.deliverytime, 
     inventory.category, 
     inventory.lastissuedate 
    FROM MX7PROD.dbo.a_inventory52 a_inventory52, 
     MX7PROD.dbo.invbalances invbalances, 
     MX7PROD.dbo.inventory  inventory 
WHERE invbalances.itemnum = inventory.itemnum 
    AND a_inventory52.itemnum = invbalances.itemnum 
    AND inventory.category <> 'cstk' 
    And inventory.category <> 'nore' 
    And inventory.category <> 'sp' 
    and invbalances.itemnum not like '%n%' 
    and invbalances.curbal = 
     (SELECT MAX(x.curbal) 
      FROM MX7PROD.dbo.inventory x 
     where x.itemnum = invbalances.itemnum 
      and x.location = invbalances.location) 

請注意,您在哪裏使用條款括號的標準分組,因爲你正在使用和在每一行,所以我未分組他們對結果沒有任何影響。

+0

不幸的是,最大限度並不總是實際的。感謝您使用括號的幫助 – user3341199

+0

那麼什麼決定了最新的數據呢?你還沒有說過什麼領域決定什麼是「最近的」爲你的目的。 –

+0

看來我無法找到確定最新數據的字段。我與之合作的最後發佈的領域普遍適用於每個條目,所以這沒有用。我將不得不搜索其他表格(我與數據庫創建無關)來查找唯一標識符。非常感謝你的幫助。 – user3341199