我是SQL的新手,你有人可以在下面的查询中帮助解决错误:
select Machine_number, MACHINE_DIM.BODY_TYPE, MACHINE_FACT.SITE_NAME, SUM(stones_out_1wk) total_stones_out, min(Week_number) from_week, max(Week_number) till_week
from MACHINE_WEEK_TOTAL_FACT
left join MACHINE_DIM on MACHINE_WEEK_TOTAL_FACT.Machine_number = MACHINE_DIM.EQUIPMENT_NR
left join MACHINE_FACT on MACHINE_DIM.EQUIPMENT_NR = MACHINE_FACT.EQUIPMENT_NR
where MACHINE_FACT.SITE_NAME like '%%' and MACHINE_DIM.PRODUCTLINE = 'NXT' and Wafers_out_1wk > 0
group by MACHINE_DIM.BODY_TYPE, Machine_number, MACHINE_FACT.SITE_NAME
order by total_stones_out desc
基本上这是重复计算结果。我可以知道在查询中要更改什么来解决问题吗?
答案 0 :(得分:0)
看起来你有2个不同粒度级别的事实表,它们由一个维度连接在一起。通常在这种情况下,当您在连接后聚合结果集时,更高级别的粮食事实表(周表)上的数字将被充气/重复计算。
在这种情况下,您需要一个拼接查询。
加入Fact1和Dimension,Aggregate into Result set 1
将Dim和Fact2加入结果集2中
然后加入结果集1和结果2.
基本上你需要首先聚合然后加入而不是先加入然后聚合。