日期:2014-05-18  浏览次数:20687 次

求助Update语句
现在有四列数据,要求采用一条UPDATE语句根据条件A分组来更新第四列的汇总字段
 
条件A       条件B                   条件B权数                               条件A权数汇总
1   4   0.10   0  
2   4   0.48   0  
2   23   0.15   0  
1   36   0.17   0  

 
因此,汇总之后条件A中等于1的字段中汇总数均为0.27,   等于2的汇总数为0.63,不知道有没有一句SQL语句能够搞定,谢谢!

------解决方案--------------------
udpate 表 set 条件A权数汇总= (select sum(条件B权数) from 表 a where 表.条件A = a.条件A)
------解决方案--------------------
declare @ta table(col1 int,col2 int, col3 numeric(15,2),col4 numeric(15,2))
insert @ta select 1, 4, 0.10, 0
union all select 2, 4, 0.48, 0
union all select 2, 23, 0.15, 0
union all select 1, 36, 0.17, 0

update a
set col4=(select sum(col3) from @ta where col1=a.col1)
from @ta a

select * from @ta

(所影响的行数为 4 行)


(所影响的行数为 4 行)

col1 col2 col3 col4
----------- ----------- ----------------- -----------------
1 4 .10 .27
2 4 .48 .63
2 23 .15 .63
1 36 .17 .27

(所影响的行数为 4 行)


------解决方案--------------------
Table1:
ConditionA NumA TotalA
1 1 0
2 48 0
2 15 0
1 17 0

Update语句为:

update Table1
set TotalA=(
case ConditionA
When '1 ' then (select sum(NumA) from table1 where ConditionA = '1 ')
when '2 ' then (select sum(NumA) from table1 where ConditionA = '2 ')
end
)