2015-03-10 3 views
0

я есть на следующие таблицы:результаты SQL-слияния различных строк, объединенные случае

type | amount 
    pine | 10 
    cypress | 40 
    gold | 30 
    sylver | 25 

Я хотел бы классифицировать, объединять и сумма в случае:

SELECT CASE WHEN (type == 'pine' OR type == 'cypress') then 'wood' end, from materials; 

я бы Лик чтобы получить:

wood | 50 
gold | 30 
silver | 25 

я хотя бы случай объединить результаты, но, очевидно, разве это дело, я пытаюсь с SUM, но безуспешно.

+0

Извините, слишком быстро нажмите «enter» – JBoy

+0

И какой результат вы получите? – Jens

+0

сосна и кипарис буквально переведены в «дерево», что означает, что они содержат отдельные столбцы. – JBoy

ответ

1

Вы можете использовать оператор CASE, как это, но вы также должны будете группе позже, чтобы получить суммарные значения. Попробуйте это:

SELECT 
    (CASE WHEN type = 'pine' OR type = 'cypress' THEN 'wood' ELSE type END) AS type, 
    SUM(amount) AS total 
FROM myTable 
GROUP BY type; 

саз Вашего не имеет никакого ELSE к нему. Вы должны включить это, потому что кажется, что если это не сосна или кипарис, тогда вы хотите выбрать любой тип, уже существующий для этого материала.

+0

Фантастический, ясный, thx @ McAdam331! – JBoy

+0

@JBoy не проблема. – AdamMc331

0

Попробуйте это:

SELECT CASE WHEN (type == 'pine' OR type == 'cypress') then 'wood' end as MacroType, count(*) from materials group by MacroType; 
+1

извините, я только что отредактировал начальную запись, спасибо, конец уже был там, это поддельный запрос, его там, чтобы показать проблему, я забыл поставить «конец» изначально – JBoy

+0

@JBoy Я отредактировал комментарий, чтобы добавить счет, ниже того же запроса для клиентов (проверено) SELECT CASE WHEN (Страна == 'Германия' OR Страна == 'UK'), затем 'ЕВРОПА' END AS REGION, count (*) из группы клиентов REGION; – Sim1

Смежные вопросы