SQL合并不同行的结果,按case合并

SQL merge results of different rows, combined by a case

我有以下 table:

   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 但没有成功。

试试这个:

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

您可以像那样使用 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。你应该包括这个,因为看起来如果它不是松树或柏树,那么你想要 select 任何已经存在的类型 material.