如何将多列求和结果按单独行返回?适配Superset图表需求
解决方案:将宽表转置为Superset适配的长表结构
通用兼容方案(支持所有SQL数据库)
用UNION ALL拆分并求和目标列,是兼容性最强的写法:
SELECT 'CostA' AS type, SUM(CostA) AS totals FROM your_table_name UNION ALL SELECT 'CostB' AS type, SUM(CostB) AS totals FROM your_table_name UNION ALL SELECT 'CostC' AS type, SUM(CostC) AS totals FROM your_table_name;
这段SQL会分别计算CostA、CostB、CostC的总和,再将三个结果合并成两行结构,完全匹配你需要的type(成本类型)和totals(合计值)列。
数据库原生简化方案(部分数据库支持)
如果你的数据库支持UNPIVOT语法(如MySQL 8.0+、SQL Server、Oracle、PostgreSQL 14+),可以用更简洁的写法:
SELECT type, SUM(total) AS totals FROM your_table_name UNPIVOT ( total FOR type IN (CostA, CostB, CostC) ) AS unpivoted_data GROUP BY type;
这个写法先把宽表转置为长表(将CostA/CostB/CostC转为行),再按类型分组求和,结果和通用方案一致,但代码更紧凑。
内容的提问来源于stack exchange,提问作者user3285408
相关产品推荐
相关产品推荐

