2017-07-20 57 views
0

我試圖獲得訂單的庫存商品列表,以及供應商給出的最新確認交貨時間。如果我嘗試使用這樣的查詢,它會返回該項目已經確認的每個提前期。我怎樣才能讓它只顯示最後一個?上一個發貨日期的商品列表

SELECT 

T0.DocNum AS Order, 
T1.ItemCode AS Item, 
T2.U_Internal_Code AS IntItem, 
CAST (((T2.onhand+T2.OnOrder)-T2.IsCommited) as int) AS Stock, 
T3.ShipDate 

FROM 

ORDR T0 

INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry 
INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode 
INNER JOIN POR1 T3 ON T2.U_Bestelcode = T3.U_Bestelcode 

WHERE T0.DocNum='1234' AND T3.ShipDate=(SELECT MAX (ShipDate) FROM POR1 WHERE T3.ShipDate = ShipDate) 

ORDER BY T1.ItemCode 
+0

訂購然後在由高到低的順序,只挑選的第一個(取決於您的數據庫軟件的方式可能會發生變化) – litelite

+2

'T3.ShipDate = (SELECT MAX(ShipDate)FROM POR1 WHERE T3.ShipDate = ShipDate)'對我沒有意義。它不應該讀''從POR1 t4哪裏T4.U_Bestelcode = t3.U_Bestelcode' – Serg

回答

0

試試這個。排名第一的只有一排排在最前面。如果你寫TOP 2,你可以從頂部獲得2個數據。

對於SQL

SELECT TOP 1 

T0.DocNum AS Order, 
T1.ItemCode AS Item, 
T2.U_Internal_Code AS IntItem, 
CAST (((T2.onhand+T2.OnOrder)-T2.IsCommited) as int) AS Stock, 
T3.ShipDate 

FROM 

ORDR T0 

INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry 
INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode 
INNER JOIN POR1 T3 ON T2.U_Bestelcode = T3.U_Bestelcode 

WHERE T0.DocNum='1234' AND T3.ShipDate=(SELECT MAX (ShipDate) FROM POR1 WHERE T3.ShipDate = ShipDate) 

ORDER BY T1.ItemCode DESC; 

對於MySQL

SELECT 

    T0.DocNum AS Order, 
    T1.ItemCode AS Item, 
    T2.U_Internal_Code AS IntItem, 
    CAST (((T2.onhand+T2.OnOrder)-T2.IsCommited) as int) AS Stock, 
    T3.ShipDate 

    FROM 

    ORDR T0 

    INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry 
    INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode 
    INNER JOIN POR1 T3 ON T2.U_Bestelcode = T3.U_Bestelcode 

    WHERE T0.DocNum='1234' AND T3.ShipDate=(SELECT MAX (ShipDate) FROM POR1 WHERE T3.ShipDate = ShipDate) 

    ORDER BY T1.ItemCode DESC 
    LIMIT 1; 
+0

該問題詢問*每個*項目的最後日期。 – dnoeth

0

通過篩選上WHERE T3.ShipDate = ShipDate你要獲得在T3各行不同的日期。

我想你想要像WHERE T3.Vendor= Vendor找到總

顯然依賴於供應商的最新更新你的數據庫結構。

0

更改此

WHERE T0.DocNum='1234' AND T3.ShipDate=(SELECT MAX (ShipDate) FROM POR1 WHERE T3.ShipDate = ShipDate) 
ORDER BY T1.ItemCode 

這個

WHERE T0.DocNum='1234' 
ORDER BY T3.ShipDate DESC, T1.ItemCode 
limit 1 
+0

問題詢問*每個*項目的最後日期。 – dnoeth

+0

我已經嘗試過與TOP 1函數(因爲SQL而不是MySQL),但這並不能解決我的問題,它現在只顯示1項而不是列表(在我的情況下是58項) –