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.
我有以下 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.