Item 50出现在结果中 说明item是强势表(就是外连接中不损失数据的表 暂且这么叫吧 想了半天也没想到该叫什么。)
20 'item 20' 425.00 435.00 'Mixed'
item_nbr actual_amt check_nbr
20 325.00 '2222'
20 100.00 '3333‘
425 为Actuals表中两行记录金额相加
mixed 符合多个check_nbr ('2222','3333')
435.为Estimates
表中两行数据相加
item_nbr estimated_amt
20 325.00
20 110.00
思路 先将Actuals汇总 根据不同的check_nbr的数量 得到check_nbr是否为Mixed
SELECT ITEM_NBR, SUM(ACTUAL_AMT) ACTUAL_TOT, (CASE WHEN COUNT(DISTINCT CHECK_NBR) != 1 THEN 'Mixed' ELSE MAX(CHECK_NBR) END) CHECK_NBR
FROM ACTUALS
GROUP BY ITEM_NBR
ITEM_NBR ACTUAL_TOT CHECK_NBR
10 300 1111
20 425 Mixed
30 525 1111
再将ESTIMATES表金额汇总
SELECT ITEM_NBR, SUM(ESTIMATED_AMT) ESTIMATE_TOT FROM ESTIMATES GROUP BY ITEM_NBR
ITEM_NBR ESTIMATE_TOT
20 435
40 25
10 350
再将这两个结果集与ITEMS做外连接 即可得到结果
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24558043/viewspace-676927/
,如需转载,请注明出处,否则将追究法律责任。