2016-11-22 52 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

希望這能幫助你。