表A: Item_Id Pro_Id
10 1003
10 1004
10 1005
20 2001
20 2002
20 2003
20 2004
20 2005
20 2006
20 2007
20 2008
20 2009
20 2010
30 3001表B:
Org_ID Item_ID Pro_ID Bal
0000001 10 1003 1.1
0000001 10 1004 1.2
0000002 10 1005 1.1
0000002 20 2001 1.2怎么通过两张表得到以下结果
(记录数= 表A的记录数*distinct(表B.Org_Id))
Org_id Item_Id Pro_Id Bal
0000001 10 1003 1.1
0000001 10 1004 1.2
0000001 10 1005 0
0000001 20 2001 0
0000001 20 2002 0
0000001 20 2003 0
0000001 20 2004 0
0000001 20 2005 0
0000001 20 2006 0
0000001 20 2007 0
0000001 20 2008 0
0000001 20 2009 0
0000001 20 2010 0
0000001 30 3001 0
0000001 10 1003 0
0000001 10 1004 0
0000001 10 1005 1.1
0000001 20 2001 1.2
0000001 20 2002 0
0000001 20 2003 0
0000001 20 2004 0
0000001 20 2005 0
0000001 20 2006 0
0000001 20 2007 0
0000001 20 2008 0
0000001 20 2009 0
0000001 20 2010 0
0000001 30 3001 0
其中该表Org_Id,Item_Id,Pro_Id在表B找不到数据的时候,Bal自动填0.
请大虾看看,解决马上给100分,谢谢.不能用函数和过程,谈谈实现原理.可以用临时表.怎样速度才能最快.效率最高.
10 1003
10 1004
10 1005
20 2001
20 2002
20 2003
20 2004
20 2005
20 2006
20 2007
20 2008
20 2009
20 2010
30 3001表B:
Org_ID Item_ID Pro_ID Bal
0000001 10 1003 1.1
0000001 10 1004 1.2
0000002 10 1005 1.1
0000002 20 2001 1.2怎么通过两张表得到以下结果
(记录数= 表A的记录数*distinct(表B.Org_Id))
Org_id Item_Id Pro_Id Bal
0000001 10 1003 1.1
0000001 10 1004 1.2
0000001 10 1005 0
0000001 20 2001 0
0000001 20 2002 0
0000001 20 2003 0
0000001 20 2004 0
0000001 20 2005 0
0000001 20 2006 0
0000001 20 2007 0
0000001 20 2008 0
0000001 20 2009 0
0000001 20 2010 0
0000001 30 3001 0
0000001 10 1003 0
0000001 10 1004 0
0000001 10 1005 1.1
0000001 20 2001 1.2
0000001 20 2002 0
0000001 20 2003 0
0000001 20 2004 0
0000001 20 2005 0
0000001 20 2006 0
0000001 20 2007 0
0000001 20 2008 0
0000001 20 2009 0
0000001 20 2010 0
0000001 30 3001 0
其中该表Org_Id,Item_Id,Pro_Id在表B找不到数据的时候,Bal自动填0.
请大虾看看,解决马上给100分,谢谢.不能用函数和过程,谈谈实现原理.可以用临时表.怎样速度才能最快.效率最高.
FROM (SELECT b.Org_ID, a.Item_ID, a.Pro_ID FROM 表A a,
(SELECT DISTINCT Org_ID FROM 表B) b) m, 表B n
WHERE m.Item_ID = n.Item_ID(+)
AND m.Pro_ID = n.Pro_ID(+)