SQL Последняя дата - PullRequest
       1

SQL Последняя дата

2 голосов
/ 21 июля 2009

У меня есть интересная логика, которую я никак не могу понять.

У нас есть таблица покупок, где каждая покупка связана с клиентом и датой. Мы хотим отменить покупку, которую каждый клиент совершил ближе всего к концу каждого месяца.

Например,

CustomerID   |  Date
1            |  01/20/2009
2            |  01/26/2009
1            |  01/21/2009
1            |  02/02/2009

Должен вернуться ....

CustomerID   |  Date
2            |  01/26/2009
1            |  01/21/2009
1            |  02/02/2009

Есть какие-нибудь идеи относительно простого способа сделать это с помощью SQL Server?

Ответы [ 4 ]

12 голосов
/ 21 июля 2009

Как насчет этого?

SELECT  CustomerID, MAX(Date)
FROM    Purchase
GROUP BY CustomerID, YEAR(Date), MONTH(Date)
1 голос
/ 21 июля 2009

Сгруппируйте по идентификатору клиента и компонентам даты и года и даты и используйте максимальный агрегат, чтобы получить самую последнюю дату из каждой группы:

select CustomerId, max(Date)
from Purchase
group by CustomerId, datepart(year, Date), datepart(month, Date)

Примечание. Если вы используете SQL Server 2005 или более позднюю версию, вы можете использовать функции year и month вместо datepart.

1 голос
/ 21 июля 2009
SELECT CustomerID, MAX(Date)
FROM Purchases
GROUP BY CustomerID, MONTH(Date), YEAR(Date)
0 голосов
/ 21 июля 2009

Группировка по месяцам, годам имеющий максимум (день)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...