#mysql
#mysql
Вопрос:
У меня есть эта гипотетическая таблица:
---- --------- -------
| id | type_id | value |
---- --------- -------
| 1 | 1 | 10 |
| 2 | 1 | 20 |
| 3 | 2 | 30 |
| 4 | 2 | 40 |
| 5 | 3 | 50 |
| 6 | 3 | 60 |
| 7 | 4 | 70 |
| 8 | 4 | 80 |
| 9 | 4 | 90 |
| 10 | 4 | 100 |
---- --------- -------
Что я хочу сделать, так это суммировать все значения с типами 1,2,3 и все значения с типом 4:
------ ------
| s123 | s4 |
------ ------
| 210 | 340 |
------ ------
Как я могу это сделать без использования вложенных запросов и ОБЪЕДИНЕНИЯ?
Я попробовал следующий запрос, который дал неверный результат:
SELECT SUM(t1.value) AS s123, SUM(t2.value) AS s4
FROM test AS t1, test AS t2
WHERE t1.type_id IN (1,2,3) AND t2.type_id=4
------ ------
| s123 | s4 |
------ ------
| 840 | 2040 |
------ ------
Ответ №1:
Попробуйте это:
SELECT SUM(CASE WHEN t1.type_id = 4 THEN 0 ELSE t1.value END) AS s123,
SUM(CASE WHEN t1.type_id = 4 THEN t1.value ELSE 0 END) AS s4
FROM test AS t1
WHERE t1.type_id IN (1,2,3, 4)