简体   繁体   中英

sql max date query

This is my query:

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

I couldn't figure our how to get the latest prices of the codes.

Thanks for your help.

You can use ROW_NUMBER() here:

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
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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM