ITPub博客

首页 > Linux操作系统 > Linux操作系统 > PL/SQL编程之道之CASE使用(15)

PL/SQL编程之道之CASE使用(15)

原创 Linux操作系统 作者:道行尚浅 时间:2010-10-28 10:15:08 0 删除 编辑
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-09-14

  • 博文量
    33
  • 访问量
    37746