【发布时间】:2013-03-18 14:10:04
【问题描述】:
我正在创建一张发票表,将每个项目按年份分组,并使用 Toad for Oracle 进行查询。
我目前正在做的是使用与我的视图相同的 FROM 和 WHERE 子句(因为这些数据来自多个表)
Select DISTINCT
SUM(Credits * Credit_Price) as "Cost", to_char(START_DATE, 'YYYY') as "YEAR",
PERSON_ID, ITEM_TYPE
[...]
WHERE
[...]
to_char(START_DATE, 'YYYY') = '2012'
当我查看我创建的视图中的成本时,我看到相应人员的成本为 0、100 和 0 的条目,
但如果我执行 SUM/GROUP BY(按 item_type、person_id 和 to_char(START_DATE, 'YYYY') 分组),同一个人的成本为 3860700!
关于如何解决这个问题让我得到 100 而不是 3860700 的任何想法?
编辑:所以基本上我想要一个数量*成本,但要对其求和,以便获得该项目类型的总数(而不是同一项目有多行)。
【问题讨论】:
-
如果您删除“DISTINCT”,您是否仍会得到 3 行:0,100,0?还是你得到更多的行?
-
如果我切换到我的视图(这是相同的减去 SUM/Group by 语句)并删除 DISTINCT 我似乎得到了很多(超过 2k)行......如果我从当然,SUM 查询我仍然只是得到一个。
-
Distinct 可能隐藏了一个连接中的错误 - 没有看到您的代码,很难提供帮助。
-
是的 - 发布您的完整查询。结果如此巨大,首先想到的是您正在交叉连接一两个表,正如@NevilleK 上面提到的那样。