A seguinte tabela de clientes é fornecida:
customerNumber expireDate versionNumber
111 2021-02-08 10:00:00 2
111 2022-02-08 10:00:00 2
111 2022-02-08 10:00:00 3
111 2023-02-08 10:00:00 2
111 2023-02-08 10:00:00 3
111 2023-02-08 10:02:00 2
111 2023-02-08 10:03:00 3
Tenho a seguinte consulta que uso para obter o número do cliente com sua data máxima de validade e seu número de versão correspondente:
SELECT customerNumber, MAX(expireDate), versionNumber
FROM customers
GROUP BY customerNumber;
Coloquei a instrução GROUP BY porque pode haver vários números customerNumber. Ela retorna:
customerNumber expireDate versionNumber
111 2023-02-08 10:03:00 2
Mesmo assim, essa não é a saída correta. O resultado deve ser:
customerNumber expireDate versionNumber
111 2023-02-08 10:03:00 3
Como deve ser a consulta para obter o número do cliente com sua data máxima de validade e seu número de versão correspondente?
Se você usar Row_Number, poderá selecionar 1 linha para cada cliente com a data de expiração máxima
violino mariadb
Fiddle do MySQL
Aqui está uma versão do mysql.
Depois de encontrar a data de expiração máxima para cada cliente, você pode unir a tabela de clientes com base em customerNumber e expireDate para encontrar outros detalhes como customerNumber, versionNumber.
Violino
Saída