sql - 执行连接时是否可以获取总和?

标签 sql oracle birt

我有这个代码:

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/

相关文章:

sql - 大查询 : How to Avoid "Resources exceeded during query execution." error

sql - 自动调用存储过程

java - 以编程方式使用外部 CSS

即使在检查库中的类是否正确之后,也会出现 Java ClassNotFoundException

SQL 索引 - 这是重叠的吗?

performance - Oracle XMLType 插入速度比较

mysql - 欢笑中的数据库到数据库的复制

sql - 有条件地从不同的表中选择

database - BIRT 和 iServer、开发/质量保证/生产环境

javascript - BIRT 报告 - 甘特图 : Opening a Modal popup on Mouse Click