我有这个代码:
select id,
p1.value as company,
p2.value as budget
FROM process p
LEFT JOIN Param p1 on p1.ID = p.ID AND p1.NAME = 'Company'
LEFT JOIN Param p2 ON p2.ID = p.ID AND p2.NAME = 'Budget'
where type = 'Authorization';
我的公司很少。示例结果如下:
Company Budget
Goodis 10000
McDonalds 15000
Goodis 500
Goodis 100
Everest 100
McDonalds 1000
Everest 10000
我想要做的是获得每个公司的预算总和(我无法在where子句中分隔公司,因为我需要整个数据并且有大量公司)。仅仅用 SQL 来完成对我来说似乎有点困难。我正在尝试做一份 BIRT 报告,因此,如果您有任何关于在 BIRT 级别上获取报告的建议,我也会非常高兴!
这是一种方法吗,还是我的尝试毫无意义?
最佳答案
我相信你想要一个分析函数:
select id, p1.value as company, p2.value as budget,
sum(p2.value) over (partition by p1.value) as CompanyBudget
FROM process p
LEFT JOIN Param p1 on p1.ID = p.ID AND p1.NAME = 'Company'
LEFT JOIN Param p2 ON p2.ID = p.ID AND p2.NAME = 'Budget'
where type = 'Authorization';
这将返回每行的总预算,但不会减少行数。
关于sql - 执行连接时是否可以获取总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15677350/