如果有人能帮助我,我会很感激。 在postgres我有一个看起来像这样的表
id | main_table_id | tax_id | value | tax_value
------ | ------------ | ------ | ------ | ------
1 | 1 | 1 | 10.00 | 1.00
2 | 1 | 2 | 15.00 | 2.00
3 | 1 | 1 | 17.00 | 3.00
不知何故,我需要在tax_id上对列'value'和'tax_value'求和,得到这样的结果
| main_table_id | sum_value_1 | sum_value_2 | sum_tax_value_1 | sum_value_2
| ------------ | ------ ------| ------------ | -----------------| -------
| 1 | 27.00 | 15.00 | 4.00 | 2.00
sum_value_1是tax_id = 1的总和(值),
sum_value_2是tax_id = 2的总和(值),
sum_tax_value_1是tax_id = 1的总和(tax_value),
sum_tax_value_2是tax_id = 2的总和(tax_value)..
在表'税'中我有10种不同的税,而tax_id是它的FK。
它可以吗?
答案 0 :(得分:1)
一种方法是条件聚合:
select mt.main_table_id,
sum(case when mt.tax_id = 1 then mt.value else 0 end) as sum_value_1,
sum(case when mt.tax_id = 1 then mt.tax_value else 0 end) as sum_tax_value_1,
sum(case when mt.tax_id = 2 then mt.value else 0 end) as sum_value_2,
sum(case when mt.tax_id = 2 then mt.tax_value else 0 end) as sum_tax_value_2
from maintable mt
group by mt.main_table_id;
您可以通过添加更多sum( . . . )
表达式来轻松概括这一点。
答案 1 :(得分:1)
SELECT SUM(VALUE), SUM(TAX_VALUE) FROM TABLE_NAME GROUP BY TAX_ID;