Исходя из моего предыдущего вопроса, могу ли я вернуть самую высокую цену, а также подсчитать все количества от нескольких поставщиков [Выберите самую высокую цену и добавьте кол-во для всех поставщиков] (SQL Сервер: ВЫБЕРИТЕ самую высокую цену и добавить кол-во из таблицы )
Я бы хотел поместить оператор case в часть запроса ORDER BY Price DES C, чтобы вернуть самую высокую цену, если количество равно> 10, или вернуть самую низкую если дело не выполнено, но я не могу заставить запрос работать. Можно ли поставить дело в тот же запрос? или есть другой способ go об этом?
Это прекрасно работает, как есть
SELECT ManuPartNo, WebPrice, TotalQtyAdded, Supplier
FROM
(SELECT dbo.TableAllProds. *,
ROW_NUMBER() OVER(PARTITION BY ManuPartNo ORDER BY WebPrice DESC) AS RN,
SUM(TotalQty) OVER(PARTITION BY ManuPartNo) AS TotalQtyAdded
FROM TableAllProds) AS t
WHERE RN = 1
ORDER BY ManuPartNo
Это то, что я пытался, но, тем не менее, я пишу часть If, это не похоже на синтаксис.
SELECT ProdName, ManuPartNo, Price, Qty, TotalQty, Supplier
FROM ( SELECT *,
ROW_NUMBER() OVER(PARTITION BY ManuPartNo
ORDER BY
CASE WHEN Price > '10' Price DESC
ELSE Price ASC END ) AS RN,
SUM(Qty) OVER(PARTITION BY ManuPartNo) AS TotalQty,
FROM dbo.TableAllProds) AS t
WHERE RN = 1
ORDER BY ManuPartNo;
Можно ли написать это в одном запросе? Будем благодарны за любые предложения или ссылки на другие сообщения.