2013-09-21 49 views
0

我被擊中牆壁試圖找出如何只選擇最近的日期值ID值的SQL設置最大隻有

SELECT TOP (100) PERCENT 
    dbo.StockStatusHistory.StockID AS Expr1, 
    dbo.Stock.StockNo, dbo.CardFile.CardName AS SalesPerson, 
    dbo.Stock.Description, dbo.Stock.Retail, 
    dbo.Stock.SaleOrderDate, dbo.Stock.WarrantyStartDate, dbo.Stock.SaleNotes, 
    dbo.Stock.ManuMonth, dbo.Stock.ManuYear, dbo.Stock.InspCertDate, 
    dbo.Stock.StockStatus, dbo.StockStatusHistory.NewStockStatus, 
    dbo.StockStatusHistory.ChangeDate AS Expr2, 
    dbo.StockStatusHistory.ID, dbo.CardFile.CardId, 
    dbo.Stock.SalesPersonId 
FROM 
    dbo.Stock 
INNER JOIN 
    dbo.CardFile ON dbo.Stock.SalesPersonId = dbo.CardFile.CardId 
INNER JOIN 
    dbo.StockStatusHistory ON dbo.Stock.StockId = dbo.StockStatusHistory.StockID 
WHERE  
    (dbo.Stock.StockStatus = 30) AND (dbo.Stock.WarrantyStartDate >= { fn CURDATE() }) 
    AND (dbo.StockStatusHistory.NewStockStatus = 30) 
    OR (dbo.Stock.StockStatus = 30) AND (dbo.Stock.WarrantyStartDate IS NULL) 
    AND (dbo.StockStatusHistory.NewStockStatus = 30) 

我試圖用MAX(dbo.StockStatusHistory.StockID)但我想出了錯誤。

希望我的代碼有道理。很明顯,SQL查詢很新。

在此先感謝 安迪

+1

*** SQL ***只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......許多東西都是特定於供應商的 - 所以我們真的需要知道什麼* *您正在使用的數據庫系統**(和哪個版本)(請相應更新標籤).... –

回答

0

我完全不明白你的「最新日期值」的意思,但我假設你要根據日期字段某處最新的條目。

如果沒有手頭的模式,很難說,但您可以在開頭創建一個ORDER BY MyDate DESC,並在最後創建一個SELECT TOP 1 dbo.xxx