SQL Получить поставщика по самой последней дате - PullRequest
0 голосов
/ 20 мая 2019

Привет, у меня есть таблица, где указан поставщик, продукт и дата,

Прямо сейчас мой запрос возвращает поставщиков, продукты и самую последнюю дату для каждого

    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 ]

1 голос
/ 20 мая 2019

Просто добавьте 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
1 голос
/ 20 мая 2019

Если у вас есть только 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
1 голос
/ 20 мая 2019

Если я правильно понимаю, вы хотите сделать это:

SELECT 
    Supplier,
    Product,
    MAX(LastDate)
FROM 
    Products
WHERE Supplier IN (''J1006962'', ''00000820'') 
AND Product = ''M131200''       
GROUP BY 
    Supplier,
    Product
ORDER BY(LastDate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...