Если я правильно понимаю ваш вопрос, попробуйте следующий подход, используя SUM()
с предложением OVER
, но без ORDER BY
:
Ввод:
CREATE TABLE #Table (
Name varchar(2),
[Date] date,
Par3 numeric(5, 1)
)
INSERT INTO #Table
(Name, [Date], Par3)
VALUES
('AB', '20100101', 1.5),
('AB', '20100101', 1.6),
('AB', '20100102', 1.5),
('AC', '20100102', 1.6),
('AD', '20100102', 1.7),
('AE', '20100102', 1.8),
('CD', '20100216', 0.9),
('EF', '20100216', 1.1),
('GH', '20100216', 1.7)
T-SQL:
SELECT Name, [Date], Par3, Rn
FROM (
SELECT
Name,
[Date],
Par3,
ROW_NUMBER() OVER (PARTITION BY [Date] ORDER BY Par3 ASC) AS Rn,
COUNT(*) OVER (PARTITION BY [Date]) As Cnt
FROM #Table
) ranked
WHERE Cnt = 3
Вывод:
------------------------------
Name Date Par3 Rn
------------------------------
CD 2010-02-16 0.9 1
EF 2010-02-16 1.1 2
GH 2010-02-16 1.7 3