with CET_table as
(
select 产品类型,
max(case when 产品标识='b' then 数量 else 0 end)
-max(case when 产品标识='c' then 数量 else 0 end) as A数量
from 产品表
gropu by 产品类型
)
update 产品表
set 数量 = A数量
from 产品表 join CET_table on 产品表.产品类型 = CET_table .产品类型
手动敲的可能有错误,大体的意思是这样的.你看看可以不.建议先不要更新
,先运行.
select 产品类型,
max(case when 产品标识='b' then 数量 else 0 end)
-max(case when 产品标识='c' then 数量 else 0 end) as A数量
from 产品表
gropu by 产品类型
看看数据正确不.
将表看成三张表就好了
update t1
set t1.cpA的数量=t2.cpB的数量-t3.cpc的数量
from 表 t1,表 t2,表 t3
where t1.产品类型=t2.产品类型
and t1.产品类型=t3.产品类型
and t1.产品名称=cpA
and t2.产品名称=cpb
and t3.产品名称=cpc
Update t
set 数量 = (select sum((case when 产品标识='b' then 数量 when 产品标识='c' then -数量 Else 0 end)) From 产品表
Where 产品类型 = a.产品类型)
From 产品表 t
where 产品类型 = 'a'
update 产品表 a set 数量=(select 数量 from 产品表 b where b.产品类型=a.产品类型 and b.产品标识='b')-(select 数量 from 产品表 c where c.产品类型=a.产品类型 and b.产品标识='c')
where 产品标识='a'