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

请帮忙看下这条SQL语句如何写

2012-03-27 
请帮忙看下这条SQL语句怎么写?具体是通过,充值表和消费表,查询出某个时间段内的一个充值总额,消费总额,余

请帮忙看下这条SQL语句怎么写?
具体是通过,充值表和消费表,查询出某个时间段内的一个充值总额,消费总额,余额的sql,具体如下:

[B] 会员充值表: sj:充值时间 je:充值金额  
B.id, B.uid, B.sj, B.je
1 张三 2012-02-01 200.00  
2 李四 2012-02-01 100.00
4 张三 2012-02-15 100.00

[C] 会员消费表: sj:消费时间 je:消费金额  
C.id, C.uid, C.sj, C.je
1 张三 2012-02-02 200.00  
2 赵六 2012-02-05 100.00
3 陈七 2012-02-17 50.00


想统计某个时间段内,比如:2012-2-1 至 2012-2-15 的 会员充值,消费,及余额表,统计结果如下

uid, 充值金额, 消费金额, 余额
张三 300 200 100
李四 100 0 100
赵六 0 100 -100

我知道正规的应该有个[A]会员表,如果有个[A]会员表这个就好办了 就可以 left join group by 来做。
但是现在这个[A]会员表,有些会员被删除了,就是说会员表里可能没有这个会员,但是却在充值和消费表里有这个记录,
所以现在就不能考虑[A]表了,只通过[B],[C]表来查询结果,要求起止时间和uid是可以输入的变量。

请高手帮忙,非常感谢!


[解决办法]

SQL code
create table B(id int, uid varchar(10), sj datetime,je decimal(18,2))insert into b values(1 ,'张三', '2012-02-01', 200.00)insert into b values(2 ,'李四', '2012-02-01', 100.00)insert into b values(4 ,'张三', '2012-02-15', 100.00)create table C(id int, uid varchar(10), sj datetime,je decimal(18,2))insert into c values(1 ,'张三', '2012-02-02', 200.00)insert into c values(2 ,'赵六', '2012-02-05', 100.00)insert into c values(3 ,'陈七', '2012-02-17', 50.00)goselect isnull(m.uid,n.uid) uid ,       isnull(m.je , 0) 充值金额,       isnull(n.je , 0) 消费金额,       isnull(m.je , 0) - isnull(n.je , 0) 余额from(select uid , sum(je) je from b where convert(varchar(10),sj,120) between '2012-02-01' and '2012-02-15' group by uid) mfull join(select uid , sum(je) je from c where convert(varchar(10),sj,120) between '2012-02-01' and '2012-02-15' group by uid) non m.uid = n.uiddrop table b , c/*uid        充值金额                                     消费金额                                     余额                                       ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- 李四         100.00                                   .00                                      100.00张三         300.00                                   200.00                                   100.00赵六         .00                                      100.00                                   -100.00(所影响的行数为 3 行)*/ 

热点排行