表A:(子集)
ModelType No Code 位置
A1 AXAX 123321 D
A2 MAMA C1232 E
A3 MARK DEFGK E
表B (此表为超集,A中的前三列在B中一定存在)
ModelType No Code 位置 数量
A1 AXAX 123321 E 10
A2 MAMA C1232 E 20
A3 MARK DEFGK D 20要求:查出与A中 ModelType No Code 位置 均相同的记录,取出数量,与A组合成新的记录,如果有位置不同 显示0最终结果应该是:
ModelType No Code 数量
A1 AXAX 123321 0 (位置不同,所以为0)
A2 MAMA C1232 20
A3 MARK DEFGK 0
设计语句:
Select A.*,(这里的怎么写) AS 数量 from A
ModelType No Code 位置
A1 AXAX 123321 D
A2 MAMA C1232 E
A3 MARK DEFGK E
表B (此表为超集,A中的前三列在B中一定存在)
ModelType No Code 位置 数量
A1 AXAX 123321 E 10
A2 MAMA C1232 E 20
A3 MARK DEFGK D 20要求:查出与A中 ModelType No Code 位置 均相同的记录,取出数量,与A组合成新的记录,如果有位置不同 显示0最终结果应该是:
ModelType No Code 数量
A1 AXAX 123321 0 (位置不同,所以为0)
A2 MAMA C1232 20
A3 MARK DEFGK 0
设计语句:
Select A.*,(这里的怎么写) AS 数量 from A
left join b
on a.ModelType=b.ModelType and a.No=b.No and a.Code=b.Code and a.位置=b.位置
where ModelType=A.ModelType and No=A.No and Code=A.Code
and 位置=A.位置),0) AS 数量 from A
a.*,isnull(b.数量,0) 数量
from
a
left join
b
on
a.ModelType=b.ModelType and a.No=b.No and a.Code=b.Code
and
a.位置=b.位置
SELECT A.ModelType,A.NO,A.Code,CASE WHEN A.位置=B.位置 THEN B.数量 ELSE 0 END AS 数量
FROM A JOIN B ON A.ModelType=B.ModelType AND A.NO=B.NO AND A.Code=B.Code
同时建议你在A中建一个编号,在B中使用A的编号进行对应。这样两个表联合的时候会更快,也减少数据冗余和修改删除出错的机会。