Я работаю над запросом, который возвращает одну строку с самой высокой ценой в ней для каждого продукта.Невозможно получить строку с наибольшим значением столбца с использованием номера строки и группы по
Для примера у меня
Таблица T1
Product Price Tax Location
Pen 10 2.25 A
Pen 5 1.25 B
Pen 15 1.5 A
Board 25 5.26 A
Board 2 NULL B
Water 5 10 A
Результат должен быть, как
Product Price Tax Location
Pen 15 1.5 A
Board 25 5.26 A
Water 5 10 A
Я использую row number()
и group by
для достижения этой цели с использованием следующих
ALTER VIEW [dbo].[InferredBestBids]
AS
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL
)) AS id ,
product ,
MAX(price) AS Price ,
MIN(tax) AS Tax ,
location
FROM [dbo].InferredBids_A
WHERE NOT (proce IS NULL
AND tax IS NULL
)
GROUP BY market ,
term
GO
Когда я побежал выше запрос, он бросил мне ошибку
Column 'dbo.InferredBids_A.Location' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
Когда я попытался сгруппировать результаты запроса по location
, он дал мне неправильные результаты, возвращающих несколько строк для product
в зависимости от location
Указанный ResultSet Безразлично, т требуют 'MAX()' или 'GROUP BY'. Похоже, что вы хотите: «ROW_NUMBER() OVER (PARTITION по продукту ORDER BY Price DESC) AS rn' и предикат' rn = 1' в предложении WHERE. – spencer7593