У меня есть таблица в SQL Server, где каждая строка представляет собой почту для доставки. Каждое электронное письмо принадлежит домену.
Мне нужно выбрать первое электронное письмо для отправки на основе столбца «Дата», но я хочу чередовать их по домену, начиная с последнего домена, используемого в циклическом режиме.
Стол:
CREATE TABLE Delivery (Date datetime, Domain int);
INSERT INTO Delivery (Date, Domain)
VALUES
('2014-01-07 11:24:31', 1),
('2014-04-07 13:21:42', 2),
('2014-02-07 14:48:58', 3),
('2014-03-07 15:58:01', 1),
('2014-06-07 15:58:01', 2),
('2014-01-07 12:58:01', 3),
('2014-01-07 19:58:01', 1) ;
С помощью этого запроса я могу отсортировать их по мере необходимости, но не могу найти способ отсортировать их по начальному значению:
SELECT [Date],[Domain]
FROM (
SELECT [Date] ,[Domain],
ROW_NUMBER() OVER (PARTITION BY [Domain] ORDER BY [Date]) AS recID
FROM Delivery ) AS r
ORDER BY recID, [domain]
Мне нужно сказать что-то вроде:
ORDER BY [domain] > @lastuseddomain
что-то похожее на функцию mysql FIELD()
Мне нужно запускать этот запрос через определенные промежутки времени с TOP 1
. Ожидаемый результат — получить самую раннюю строку с доменом> домен предыдущей строки, если она существует, или перезапустить с доменом = 1.
Как циклическая сортировка по домену