首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

表B 表A,该怎么解决

2013-12-06 
表B 表A表 A(A_ID INT,A_SUM DECIMAL)表 B(B_ID INT,B_detail DECIMAL)A中假如数据为 A_IDA_SUM,B中的数据

表B 表A
表 A(                
A_ID INT,
A_SUM DECIMAL)
表 B(
B_ID INT,
B_detail DECIMAL)
A中假如数据为 A_ID   A_SUM   ,B中的数据为 B_ID   B_detail
                1       0                    1        34
                2      0                     1        56 
                3      0                     1        10
                                             2        74
                                             2        49
                                             3        37
                                             3        26
                                             3        65
                                             3        23
现在想B中根据B_ID 分组后累加B_detail,在把这个累加的值 赋给与B_ID相同 A_ID的A_SUM值。
例如为B表中B_ID 为1的B_detail累加后为100,再把这个100的累加值赋给表A中A_ID=1(ID值和B_ID相同), 的A_SUM.另外SUM()函数返回的是INT型的,B_detail是decimal型的,A_SUM的值最后我想要的也是decimal型的。求语句,。。。
[解决办法]

update 
 a
set
 a.A_SUM=b.b_sum
from 
 a
inner join 
 (select B_ID,sum( B_detail) as b_sum from b group by B_ID)b
on 
 a.A_ID=b.B_ID

[解决办法]

CREATE TABLE #A(A_ID INT,A_SUM DECIMAL)
CREATE TABLE #B(B_ID INT,B_detail DECIMAL)

INSERT INTO #A
SELECT 1,0 UNION ALL
SELECT 2,0 UNION ALL
SELECT 3,0 

INSERT INTO #B
SELECT 1,34 UNION ALL
SELECT 1,56 UNION ALL
SELECT 1,10 UNION ALL
SELECT 2,74 UNION ALL
SELECT 2,49 UNION ALL
SELECT 3,37 UNION ALL
SELECT 3,26 UNION ALL
SELECT 3,65 UNION ALL
SELECT 3,23


UPDATE #a SET a_sum=a.B_detail
FROM #A
LEFT JOIN 
(SELECT B_ID,SUM(B_detail)B_detail FROM #B GROUP BY B_ID)
a ON a.B_ID=#A.A_ID

SELECT * FROM #A

A_ID        A_SUM
----------- ---------------------------------------
1           100
2           123
3           151



(3 row(s) affected)

热点排行