日期:2014-05-17  浏览次数:20437 次

sql 用游标进行更新
有这样几个表
单据表:客户 类型 产品
  甲 出库 彩包
  已 入库 纸箱
客户表: 名称 代码
  甲 001
  乙 002
产品表:名称 代码
  彩包 A
  纸箱 B
declare ejxl cursor for select * from 单据表
open ejxl
fetch next from ejxl 
怎样转换成这样的格式
客户 类型 产品
001 1 A
002 2 B
类型是没有基础表的 只能进行判断
  



------解决方案--------------------
类型是没有基础表的 只能进行判断

怎么判断?
------解决方案--------------------
单据表:客户 类型 产品
甲 出库 彩包
已 入库 纸箱
客户表: 名称 代码
甲 001
乙 002
产品表:名称 代码
彩包 A
纸箱 B

update a
set a.代码 = c.代码
from 客户表 a join 单据表 b on a.名称 = b.客户
join 产品表 c on b.产品 = c.名称
------解决方案--------------------
SQL code
--try


--select
select b.代码 as 客户,case when 类型='出库' then 1 else 2 end as 类型,
c.代码 as 产品
from 单据表 as a,客户表 as b ,产品表 as c
where a.客户=b.名称 and a.产品=c.代码
--update
update a set 客户=b.代码 ,类型=case when 类型='出库' then 1 else 2 end ,
产品=c.代码
from 单据表 as a,客户表 as b ,产品表 as c
where a.客户=b.名称 and a.产品=c.代码