首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReportBuilder3.0对Oracle数据库查询的和结果加倍

ReportBuilder3.0对Oracle数据库查询的和结果加倍
EN

Stack Overflow用户
提问于 2015-10-07 20:00:34
回答 1查看 34关注 0票数 1

我需要在一张没有“迟交费”和“报税费”的表格内取得总费用,然后在核实正确的许可证ID时,包括在场的费用总额,当我试图将第二项费用加到查询中时,费用就会翻倍。这是我到目前为止所拥有的。

代码语言:javascript
复制
SELECT 
  PERMIT.CODE,
  PERMIT.ID2,
  PERMIT.ID1,
  PERMIT.ID3,
  SUM(ITEM.FEE) AS TotalFee,
FROM 
  PERMIT,
  ITEM
AND PERMIT.CODE        = ITEM.CODE
AND PERMIT.ID1         = ITEM.ID1
AND PERMIT.ID2         = ITEM.ID2
AND PERMIT.ID3         = ITEM.ID3
AND ITEM.DESC           <> 'Late Fee'
AND ITEM.DESC           <> 'Filing Fee'

结果得到正确的数字:

代码语言:javascript
复制
TOTALFEE
550
350

然而,当我将第二笔费用加到查询中时:

代码语言:javascript
复制
SELECT 
  PERMIT.CODE,
  PERMIT.ID2,
  PERMIT.ID1,
  PERMIT.ID3,
  SUM(ITEM.FEE) AS TotalFee,
  SUM(t.FEE) AS Fee,
FROM 
  PERMIT,
  ITEM,
  ITEM t
AND PERMIT.CODE        = ITEM.CODE
AND PERMIT.ID1         = ITEM.ID1
AND PERMIT.ID2         = ITEM.ID2
AND PERMIT.ID3         = ITEM.ID3
AND ITEM.DESC           <> 'Late Fee'
AND ITEM.DESC           <> 'Filing Fee'
AND PERMIT.CODE        = t.CODE
AND PERMIT.ID1         = t.ID1
AND PERMIT.ID2         = t.ID2
AND PERMIT.ID3         = t.ID3 

我得到了同样的两行,但数字是错的。结果:

代码语言:javascript
复制
TOTALFEE | FEE
1650     | 1650
2100     | 2100

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 20:06:03

您的查询没有group by,在使用聚合函数时应该是这样。此外,您还可以使用条件聚合获得所需的结果。

代码语言:javascript
复制
SELECT 
 PERMIT.CODE,
 PERMIT.ID2,
 PERMIT.ID1,
 PERMIT.ID3,
 SUM(case when ITEM.DESC <> 'Late Fee' then ITEM.FEE end) AS TotalFee,
 SUM(case when ITEM.DESC <> 'Filing Fee' then ITEM.FEE end) AS Fee
FROM PERMIT JOIN ITEM
ON PERMIT.CODE = ITEM.CODE
AND PERMIT.ID1 = ITEM.ID1
AND PERMIT.ID2 = ITEM.ID2
AND PERMIT.ID3 = ITEM.ID3
GROUP BY PERMIT.CODE, PERMIT.ID2, PERMIT.ID1, PERMIT.ID3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33001408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档