2016-11-22 53 views
0
添加到表

表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的不同值是表的第3列1 ....

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

我需要查看TABLE1,并找到哪个DESC缺少每个特定MASTER_ID的每个SUB_ID。每个MASTER_ID与另一个无关......这意味着我不应该看到在MASTER_PLAN中不存在的描述。例如,MASTER_ID 9876具有TEXT5的DESC。这个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 
+0

请标出栏位。另外什么是MASTER_PLAN? – mzhaase

+0

对不起,MASTER_PLAN应该是MASTER_ID ... COL1是MASTER_ID,COL2是SUB_ID,COL3是DESC,COL4是百分比。对于表2,它只有2列... COL1是MASTER_ID,而COL2是DESC – 2016-11-22 14:18:20

回答

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

希望这能帮助你。