在线等, 急急急!!!SQL Server的update 问题(更新)
比如产品表产品类型产品名称数量产品标识-------------------------------------------------1cpA100a1cpB700b1...
比如产品表
产品类型 产品名称 数量 产品标识
-------------------------------------------------
1 cpA 100 a
1 cpB 700 b
1 cpC 350 c
2 cpD 200 a
2 cpE 800 b
2 cpF 500 c
-------------------------------------------------
以产品类型为汇总单位将每个产品类型中产品标识为a的数量update成该类型产品中产品标识b的数量减去产品标识为c的数量, 如何实现啊?
即:
(cpA的数量 = cpB的数量 - cpC的数量 = 700 - 350 = 350)
(cpD的数量 = cpE的数量 - cpF的数量 = 800 - 500 = 300) 展开
产品类型 产品名称 数量 产品标识
-------------------------------------------------
1 cpA 100 a
1 cpB 700 b
1 cpC 350 c
2 cpD 200 a
2 cpE 800 b
2 cpF 500 c
-------------------------------------------------
以产品类型为汇总单位将每个产品类型中产品标识为a的数量update成该类型产品中产品标识b的数量减去产品标识为c的数量, 如何实现啊?
即:
(cpA的数量 = cpB的数量 - cpC的数量 = 700 - 350 = 350)
(cpD的数量 = cpE的数量 - cpF的数量 = 800 - 500 = 300) 展开
展开全部
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 产品类型
看看数据正确不.
(
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 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'
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'
where 产品标识='a'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询