SQL按最新日期获取供应商

时间:2019-05-20 14:19:45

标签: sql-server

嗨,我有一张桌子,上面有供应商,产品和日期,

现在我的查询返回了每个供应商,产品和最新日期

    SELECT 
        Supplier,
        Product,
        MAX(LastDate)
    FROM 
        Products
    WHERE Supplier IN (''J1006962'', ''00000820'') 
    AND Product = ''M131200''       
    GROUP BY 
        Supplier,
        Product

这将返回

Supplier     Product    LastDate
00000820     M131200    1190506
J1006962     M131200    1180516

结果应该是

Supplier     Product    LastDate
00000820     M131200    1190506

日期是db2格式,因为它是链接服务器

3 个答案:

答案 0 :(得分:1)

如果我理解正确,则想这样做:

SELECT 
    Supplier,
    Product,
    MAX(LastDate)
FROM 
    Products
WHERE Supplier IN (''J1006962'', ''00000820'') 
AND Product = ''M131200''       
GROUP BY 
    Supplier,
    Product
ORDER BY(LastDate);

答案 1 :(得分:1)

只需添加一个SELECT TOP 1并对其进行排序:

SELECT TOP 1
    Supplier,
    Product,
    MAX(LastDate)
FROM 
    Products
WHERE Supplier IN (''J1006962'', ''00000820'') 
AND Product = ''M131200''       
GROUP BY 
    Supplier,
    Product
ORDER BY LastDate DESC

答案 2 :(得分:1)

如果您只有1种产品,则不需要GROUP BY

SELECT TOP 1
    Supplier,
    Product,
    LastDate
FROM 
    Products
WHERE Supplier IN ('J1006962', '00000820') 
AND Product = ''M131200''       
ORDER BY LastDate DESC;

如果希望每种产品的最后供应商使用ROW_NUMBER()

SELECT *
FROM (
    SELECT 
        Supplier,
        Product,
        LastDate,
        ROW_NUMBER() OVER (PARTITION BY Product ORDER BY LastDate DESC) as rn
    FROM 
        Products
    WHERE Supplier IN ('J1006962', '00000820') 
)
WHERE rn = 1
相关问题