Я создаю отчет, который объединяет несколько таблиц. Все сошлось совершенно без одного аспекта. Мне нужно поле cost2, чтобы показать только самую высокую стоимость. В принципе, элемент проходит через несколько изменений затрат через производство, причем конечная стоимость является самой высокой. Мне нужно запросить только ту окончательную стоимость. Я знаю, что это простое решение, но я боролся больше, чем должен.SQL Server - фильтр по максимальному значению
Вот упрощенный пример моего запроса:
Функция MAX не работает так, как я ее предполагал.
SELECT DISTINCT table1.item_no,
table2.quantity,
table2.date,
table3.cost1,
MAX(table4.cost2)
FROM table1
INNER JOIN table2 ON table2.item_no = table1.item_no
INNER JOIN table3 ON table3.item_no = table1.item_no
INNER JOIN table4 ON table4.item_no = table1.item_no
WHERE table3.cost1 <> 0
GROUP BY table1.item_no,
table2.quantity,
table2.date,
table3.cost1
как бы вы определили окончательную стоимость? –
Это опечатка на последнем INNER JOIN запятая вместо периода? 'table1, item_no' должно быть' table1.item_no' – xQbert
Можете ли вы определить, что «не работает, как я его намеревался» ??? Если бы я собирался выкинуть некоторый psuedocode для определения вашего запроса на основе неопределенного описания, он выглядел бы точно так же, как вы опубликовали. Помогите нам понять проблему, и мы сможем помочь вам найти решение. Здесь отличное место для начала. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –