根据条件对表进行排序和添加

时间:2016-11-22 14:01:57

标签: mysql

表1有4列,模拟数据看起来像这样......

MASTER_ID  SUB_ID  DESC   Percent
1234       ABC     TEXT   80
1234       XYZ     TEXT2  20
1234       XYZ     TEXT4  30
9876       XYZ     TEXT2  20
9876       XYZ     TEXT5  10
9876       ABC     TEXT1  20 

表2包含每个MASTER_ID的DESC的不同值,即表1的第3列.......

MASTER_ID  DESC
1234       TEXT
1234       TEXT2
1234       TEXT4
9876       TEXT2
9876       TEXT5
9876       TEXT1

我需要查看TABLE1并找出每个特定MASTER_ID的每个SUB_ID缺少哪个DESC。每个MASTER_ID与另一个无关......这意味着我不应该看到MASTER_PLAN中不存在的描述。例如,MASTER_ID 9876的DESC为TEXT5。此DESC应仅出现在MASTER_ID的9876 DESC中。 SUB_ID可以存在于不同的MASTER_ID中。但如前所述,每个MASTER_ID都应该被认为是独立的。

决赛桌应该是这样的......

MASTER_ID  SUB_ID  DESC   Percent
1234       ABC     TEXT    80
1234       ABC     TEXT2   0
1234       ABC     TEXT4   0
1234       XYZ     TEXT2   20
1234       XYZ     TEXT4   30
1234       XYZ     TEXT    0
9876       XYZ     TEXT2   20
9876       XYZ     TEXT5   10
9876       XYZ     TEXT1   0
9876       ABC     TEXT1   20
9876       ABC     TEXT2   0
9876       ABC     TEXT5   0

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询

select t3.master_id, t3.sub_id, t3.Desc1, case when t4.percentage is null then 0 else t4.percentage end percentage
from
    (select  distinct t1.master_id, sub_id, t2.Desc1
    from table1 t1
    cross join table2 t2
    where t1.master_id = t2.master_id) t3    
left join table1 t4 
 on t4.master_id = t3.master_id 
  and t3.sub_id = t4.sub_id 
  and t3.desc1 = t4.desc1

以上查询给出了以下结果

enter image description here

希望这可以帮助你。