选择更新sql server?

时间:2013-12-20 10:51:49

标签: sql sql-server-2008

Alter Proc K_RT_BranchWiseBirdsStock
@branch varchar(50)

as
begin

select  ROW_NUMBER() OVER(ORDER BY a.branch) as sno,b.sno as keys,
d.branch,a.transferbirds,b.noofbirds,c.noofbirds,e.mortality,
(a.transferbirds-b.noofbirds-c.noofbirds-e.mortality) as finalbirds from    
K_RT_RetailsDetails a 
inner join K_RT_WarehouseDetails b on a.branch = b.branch
inner join K_RT_MasterBirdsTransferDet c on a.branch = c.frombranch 
inner join K_RT_MasterRetailStores d on d.sno = a.branch
inner join K_RT_DailyEntry e on e.branch = d.sno
where d.branch = @branch

update K_RT_RetailsDetails set transferbirds = finalbirds where branch = @branch
end

这里我要填写列transferbirds = finalbirds ...这里finalbirds是一个别名。我可以更新那个列。请帮助我

1 个答案:

答案 0 :(得分:2)

使用此

ALTER Proc K_RT_BranchWiseBirdsStock
@branch varchar(50)

as
begin


declare @final_birds varchar(255)
declare @snum varchar(50)
declare @key varchar(50)
declare @branches varchar(50)
declare @transfbirds varchar(50)
declare @numofbirdsb varchar(50)
declare @numofbirdsc varchar(50)
declare @mortal varchar(50)


select  @snum=ROW_NUMBER() OVER(ORDER BY a.branch) ,
@key=b.sno,
@branches=d.branch,
@transfbirds=a.transferbirds,
@numofbirdsb=b.noofbirds,
@numofbirdsc=c.noofbirds,
@mortal= e.mortality,
@final_birds=(a.transferbirds-b.noofbirds-c.noofbirds-e.mortality)
from    
K_RT_RetailsDetails a 
inner join K_RT_WarehouseDetails b on a.branch = b.branch
inner join K_RT_MasterBirdsTransferDet c on a.branch = c.frombranch 
inner join K_RT_MasterRetailStores d on d.sno = a.branch
inner join K_RT_DailyEntry e on e.branch = d.sno
where d.branch = @branch

update K_RT_RetailsDetails set transferbirds = @final_birds where branch = @branch
end

尝试这个,为了回答的目的我已经为每个声明的变量使用了varchar(50),你应该使用你在创建表时声明的相应数据类型来更新它。此查询已在我的网站上执行,没有任何错误