Я использую Oracle.
Имея таблицу как:
Year Type Value
2011 1 500
2011 2 550
2011 3 600
...
...
2012 1 600
2012 2 750
2012 3 930
Мне нужно вычесть все значения из разных типов, сгруппированных по годам. Операция будет такой:
На 2011 год -> 1-2-3 (500-550-600)
На 2012 год -> 1-2-3 (600-750-930)
Для ...
Результат должен быть:
Year Value
2011 -650
2012 -1080
... ...
Мне просто не удается заставить этот запрос работать ..
2 ответа
Использовать условное агрегирование:
select sum(case when type = 1 then value else - value end) as value
from table t
group by year;
Вы имеете в виду GROUP BY, CASE, чтобы выбрать знак + для типа 1, - для других:
select "year",
SUM(case when type = 1 then value else -value end)
from yourtable
group by "year"
Похожие вопросы
Связанные вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.