Я хотел бы сделать SQL-запрос, но он не работает. Вот как моя таблица выглядитSQL LAST plus WHERE, не дающий нужного результата
Client|Product|Amount|
A | P1 | 5 |
A | P1 | 7 |
A | P1 | 3 |
A | P2 | 8 |
A | P2 | 0 |
A | P2 | 5 |
A | P3 | 9 |
A | P3 | 0 |
Я хотел бы задать запрос, который обеспечил бы мне список последних записей для каждого клиента и каждого продукта, который больше 0. Результат должен выглядеть следующим образом:
Client|Product|Amount|
A | P1 | 3 |
A | P2 | 5 |
Я попытался с помощью этого кода
SELECT Client,Product, LAST(Amount)
FROM Table
WHERE Amount>0
GROUP BY Client,Product
Но я получаю этот выход:
Client|Product|Amount|
A | P1 | 3 |
A | P2 | 5 |
A | P3 | 9 |
Любые идеи, как это решить?
Я предполагаю, что от использования 'последнего()', что вы используете MS Access. Вы должны соответствующим образом пометить вопрос. –
Возможно, требуется ORDER BY http://office.microsoft.com/en-au/access-help/HV080761079.aspx * Они просто возвращают значение указанного поля в первой или последней записи, соответственно, из набора результатов возвращенный запросом. Поскольку записи обычно возвращаются в каком-либо определенном порядке (если запрос не включает предложение ORDER BY), записи, возвращаемые этими функциями, будут произвольными * По этой причине эти функции бесполезны для GROUP BY (потому что часто вы хотите заказать поле, которое вы не группируете по дате). –
@GordonLinoff: Oracle имеет 'last()' [также] (https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions083.htm#SQLRF00653) –