すべての行が配信するメールである 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 で再起動することです。
ドメイン上の循環ソートのように