读书人

sql 语句有关问题老师帮一下忙

发布时间: 2013-09-05 16:02:07 作者: rapoo

sql 语句问题,老师帮一下忙!
数据库1:vip1 表名:jifen 字段:cardid jifen name
数据库2:vip2 表明:jifen 字段:cardid jifen name

实现的目的:将两个表中的相同的人 积分相加 插入一个新表中
例如
vip1 jifen表
cardid jifen name
1 2 张三
2 3 张四
vip2 jifen表
cardid jifen name
1 10 张三
3 5 李四
插入新表的结果为
cardid jifen name
1 12 张三
2 3 张四
3 5 李四
给个完整的语句,谢谢!
[解决办法]
insert into 新表 (cardid,name,jifen)
select cardid,name,sum(jifen) jifen
from
(
select cardid,jifen,name from vip1
union all
select cardid,jifen,name from vip2
) a
group by cardid,name
[解决办法]

if OBJECT_ID('tempdb..#tempA', 'u') is not null   drop table #tempA;
go
create table #tempA( [cardid] varchar(100), [jifen] int, [name] varchar(100));
insert #tempA
select '1','2','张三' union all
select '2','3','张四'

if OBJECT_ID('tempdb..#tempB', 'u') is not null drop table #tempB;
go
create table #tempB( [cardid] varchar(100), [jifen] int, [name] varchar(100));


insert #tempB
select '1','10','张三' union all
select '3','5','李四'

--SQL:
SELECT [cardid], jifen = SUM(jifen), name
FROM
(
SELECT cardid, jifen, name FROM #tempA
UNION ALL
SELECT [cardid], jifen, name FROM #tempB
) t
GROUP BY cardid, name
ORDER BY MIN(cardid)
/*
cardidjifenname
112张三
23张四
35李四
*/


[解决办法]
楼上提供的答案用cardid和name分组应该是不对的,因为有人姓名可能相同,所以建议采用下述方法。
select vipcode,sumxfjftotal=sum(sumxfjftotal)
from
(
select * from vip43.dbo.vip
union
select * from vipdb43.dbo.vip
) t
group by vipcode

楼主如果要详尽的信息,可以用这个再去用vipcode关联人员表

读书人网 >SQL Server

热点推荐