2016-04-25 22 views
2

は、これが私のクエリです:SQL最大日付クエリ

SELECT ITM.CODE 
    , Price 
    , STL.DATE_ AS gun 
FROM LG_094_ITEMS ITM WITH (NOLOCK) 
INNER JOIN LG_094_01_STLINE STL ON ITM.LOGICALREF = STL.STOCKREF 
WHERE Price > 0 
    AND TRCODE = 1 
    AND CANCELLED = 0 
    AND INVOICEREF > 0 
    AND STL.LINETYPE = 0 

私はコードの最新の価格を得るために私達の方法を見つけ出すことができませんでした。

ありがとうございました。

+0

を、あなたのテーブル構造とサンプルデータを投稿しない限り、私たちはどちらかそれを把握することはできません.... – WillardSolutions

答えて

3

あなたがここにROW_NUMBER()を使用することができます。

SELECT * 
FROM (
    SELECT ITM.CODE 
     , Price 
     , STL.DATE_ AS gun 
     , ROW_NUMBER() OVER (PARTITION BY ITM.CODE ORDER BY STL.DATE_ DESC) AS RN 
    FROM LG_094_ITEMS ITM WITH (NOLOCK) 
    INNER JOIN LG_094_01_STLINE STL ON ITM.LOGICALREF = STL.STOCKREF 
    WHERE Price > 0 
     AND TRCODE = 1 
     AND CANCELLED = 0 
     AND INVOICEREF > 0 
     AND STL.LINETYPE = 0 
) prices 
WHERE RN = 1 
2
SELECT * 
FROM (
    SELECT ITM.CODE 
     , Price 
     , STL.DATE_ AS gun 
     , RowNum = ROW_NUMBER() OVER (PARTITION BY ITM.CODE ORDER BY STL.DATE_ DESC) 
    FROM LG_094_ITEMS ITM 
    INNER JOIN LG_094_01_STLINE STL ON ITM.LOGICALREF = STL.STOCKREF 
    WHERE Price > 0 
     AND TRCODE = 1 
     AND CANCELLED = 0 
     AND INVOICEREF > 0 
     AND STL.LINETYPE = 0 
) t 
WHERE t.RowNum = 1