У меня есть эта таблица:просуммировать результат определенных строк путем сравнения строковых значений столбца
fy period division employee_id category_name amount
2013 4 Sales 123452 Salary 130000
2013 4 Marketing 124232 Salary 120000
2013 4 Sales-WC 124244 Bonus 10000
2013 4 Sales 124244 Adjustments 1000
2013 4 Sales-WC 897287 Salary 65000
Я пытаюсь получить запрос, который даст мне сумму сумм для каждой категории, но Я хочу объединить разделение, когда на нем есть «-WC».
Этот запрос:
select division_name, category_name, SUM(amount) as amount
FROM tblStaff
where fy=2013 and period=4
group by division_name, category_name
дает мне близко к тому, что я хочу:
division category_name amount
Sales Salary 130000
Sales-WC Salary 65000
Sales-WC Bonus 1000
Marketing Salary 120000
Sales Adjustments 1000
Но что я хотел бы это:
division category_name amount
Sales Salary 195000
Sales-WC Bonus 1000
Marketing Salary 120000
Sales Adjustments 1000
Где category_name 'Зарплата' было для «Продажи» и «Продажи-WC».
Я пытался, начиная с помощью оператора выбора, как:
SELECT case
when division_name = division_name + '-WC' THEN division_name
ELSE 'not found' --did this just for testing
END as 'division_name',
category_name,
SUM(amount)
FROM tblStaff
where fy=2013 and period=4
group by division_name, category_name
Но, похоже, я не могу использовать имя столбца в части сазе, как это, потому что, когда я запускаю эту команду I просто введите div_name = 'not found' для каждой строки.
Любые идеи? Благодаря!
Это в основном это, за исключением того, что мне пришлось использовать функции LEFT/LEN, как описано в решении @scraatz. Отметьте ваши ответы как ответ, так как он действительно ответил на весь вопрос. Благодаря! – russds
У вас вопрос был отмечен «SQL», и мой ответ на 100% Стандартный SQL :-) – dnoeth