怎么样将查询的结果放在select中比较再次查询?select中查询出结果然后显示出

redcn2004 2011-08-05 02:15:12
表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

...全文
80 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
往前'走 2011-08-05
  • 打赏
  • 举报
回复
首先按你的意思是,A中的前3列数据一定会在B中出现,有可能A中的位置和B中的位置不同。如果是相同的,列出前3列和B中的“数量”列,如果不同,则列出前3列,“数量”为0。
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的编号进行对应。这样两个表联合的时候会更快,也减少数据冗余和修改删除出错的机会。
redcn2004 2011-08-05
  • 打赏
  • 举报
回复
吼吼,谢谢以上各位啦,我先调试下先
--小F-- 2011-08-05
  • 打赏
  • 举报
回复
select
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.位置
NBDBA 2011-08-05
  • 打赏
  • 举报
回复
就是个左连接问题,基本概念
快溜 2011-08-05
  • 打赏
  • 举报
回复
Select A.*,isnull((select 数量 from B 
where ModelType=A.ModelType and No=A.No and Code=A.Code
and 位置=A.位置),0) AS 数量 from A
NBDBA 2011-08-05
  • 打赏
  • 举报
回复
Select A.*,isnull(b.数量,0) AS 数量 from A 
left join b
on a.ModelType=b.ModelType and a.No=b.No and a.Code=b.Code and a.位置=b.位置

  • 打赏
  • 举报
回复
存储过程

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧