У меня есть таблица:
items status count date
----- ------ ----- ----------
apple good 100 01/02/2017
apple good 200 03/02/2017
apple bad 50 02/02/2017
pear good 100 04/02/2017
Результат, который я ищу, состоит в том, чтобы суммировать количество на основе статуса и отображать самую последнюю дату для каждого элемента:
items count date
----- ----- ----------
apple 250 03/02/2017
pear 100 04/02/2017
Используйте сумму, максимум и группу по и случай, когда для суммы правильно хорошо и плохо
select items, sum(case when status = 'good' then count else -count end), max(date)
from my_table
group by itmes
или если вам не нужна относительная сумма, основанная на хорошем и плохом
select items, sum( count ), max(date)
from my_table
group by itmes
Попробуй это:
SELECT items, SUM(count) count, MAX(date) date
FROM table
GROUP BY items
А если вы хотите разделить сумму по каждому статусу, то:
SELECT items, status, SUM(count) count, MAX(date) date
FROM table
GROUP BY items, status
Я думаю, ты просто хочешь:
select items, sum(count), max(date)
from t
group by items;
Пожалуйста, отметьте имя БД, которое вы используете ...