【发布时间】:2015-04-16 18:11:48
【问题描述】:
尝试查询 Order Header 和 Detail 表以按月份汇总结果,但遇到数据模型限制。本质上,我想审核我们的 ETL 流程,以确保从 Detail 级别正确聚合 Header 级别的数据。 TRANS_ID 键字段代表一个订单,因此每个 TRANS_ID 明细表自然会有几行。
表 ORDER_HEADER 有(为了便于说明):
TRANS_ID
TRANS_DT (DD-MON-YY)
PROFIT
表 ORDER_DETAIL 有:
TRANS_ID
TRANS_LINE_NO
LINE_ITM_PROFIT
我要回答的问题是:在月份级别,Header 的总利润是多少,Detail 的总利润是多少?我的结果应该包含三列:“Trans_DT 月份”、“HDR 利润”和“DTL 利润”
如果我在 ORDER_HEADER.TRANS_ID = ORDER_DETAIL.TRANS_ID 和 GROUP BY "Month of ORDER_HEADER.TRANS_DT" 上进行内部连接,那么我显然会复制 Header 值。
我的数据量(在 Oracle RDBMS 中)约为 150MM Header 记录和超过 600MM Detail 记录,因此最好的解决方案是在加入 Header 之前将整个 Detail 表加到“TRANS_ID”级别。
【问题讨论】:
标签: sql oracle data-modeling