以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何批量把A表数据匹配到B表中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164188)

--  作者:shxlife
--  发布时间:2021/4/29 8:30:00
--  如何批量把A表数据匹配到B表中
如A表有以下几个字段: 一级细分市场,二级细分市场,三级细分市场,品牌代码,费用率,起用日期,终止晶期。根据不同情况,大约有60多条记录。
  B表有也有以下字段:客户名,一级细分市场,二级细分市场,三级细分市场,品牌代码,收入,费用率,收款日期,记录大约有1万多条。
   其中根据A表中:一级细分市场,二级细分市场,三级细分市场,品牌代码与B表中匹配,将A表的 费用率  添加到B表中的 费用率。 其中A表字段中几个字段数据可以为空,
   请问如何用SQL语句批量处理。

--  作者:有点蓝
--  发布时间:2021/4/29 8:49:00
--  
什么数据库?内部表、access还是SqlServer?
--  作者:shxlife
--  发布时间:2021/4/29 9:05:00
--  
sql数据库
--  作者:有点蓝
--  发布时间:2021/4/29 9:20:00
--  
update a set 费用率=b.费用率 from 表A as a inner join 表B as b on  a.一级细分市场=b.一级细分市场 and a.二级细分市场 = b.二级细分市场 and ......
--  作者:shxlife
--  发布时间:2021/4/29 9:38:00
--  
因为:字段内容不一定固定的,同时在A表中某个字段有多项内容: 如A表中品牌代码字段,可以有多个品牌。在B表中是单一的品牌。有些字段A表中为空值。   A表取的数据需要处理,需要组合表达式过的


--  作者:有点蓝
--  发布时间:2021/4/29 9:57:00
--  
这种没有办法使用一条sql处理。加载数据后使用代码处理,或者到存储过程里使用游标循环A表所有行,逐行拆分品牌处理。

如果有些列还是空的,这就很麻烦了,sql对空值要单独判断的,5个列其中可能有1、2、3、4个列是空值的判断组合至少有4*3*2=24个。建议从业务逻辑上改进,否则就是个坑。

比如二级细分市场可能为空,就有3种不同的判断结果
a.一级细分市场=b.一级细分市场 and a.二级细分市场 = b.二级细分市场
a.一级细分市场=b.一级细分市场 and a.二级细分市场 is null and b.二级细分市场  is null
a.一级细分市场=b.一级细分市场

--  作者:shxlife
--  发布时间:2021/4/30 16:16:00
--  
游标循环A表所有行 代吗如何写?  
--  作者:有点蓝
--  发布时间:2021/4/30 16:50:00
--  
https://www.baidu.com/s?wd=SqlServer%20%E6%B8%B8%E6%A0%87