查询问题---迷糊
时间:2011-12-07
来源:互联网
卡号 获取值 年份 月份
1102 460 2010 11
1102 230 2010 11
1102 530 2010 11
1102 265 2010 11
1102 530 2010 11
1102 230 2010 12
1102 265 2010 12
1102 530 2010 12
1102 530 2010 12
1102 230 2011 1
1102 230 2011 1
1102 460 2011 1
1102 690 2011 1
1102 1150 2011 1
1102 1700 2011 1
1102 265 2011 1
1102 1325 2011 1
1102 1325 2011 1
1102 1060 2011 2
1102 530 2011 3
1102 530 2011 3
1102 530 2011 4
1102 795 2011 4
1102 795 2011 4
1102 530 2011 4
1102 530 2011 5
1102 530 2011 5
1102 133 2011 5
1102 266 2011 5
1102 340 2011 9
1102 340 2011 10
1102 340 2011 10
1102 680 2011 11
兑换表
卡号 兑换值 年份 月份
1102 1920 2010 12
1102 1512 2011 1
1102 8550 2011 3
1102 975 2011 4
1102 3870 2011 9
1102 430 2011 10
1102 916 2011 11
1102 550 2011 12
查询结果
卡号 总获取 总兑换 剩余 年份 月份
1102 17174 12957 4217 2011 8
1102 17514 12957 4557 2011 9
1102 18194 16827 1367 2011 10
作者: admczy 发布时间: 2011-12-07
作者: pengxuan 发布时间: 2011-12-07
select a.卡号,sum(a.获取值),sum(b.兑换值),a.年份,a.月份 from 获取表 a left join 兑换表 b on a.卡号=b.卡号 and a.年份=b.年份 and a.月份=b.月份 group by a.卡号,a.年份,a.月份
作者: qianjin036a 发布时间: 2011-12-07
哪有8月份
我也没看见。
作者: fredrickhu 发布时间: 2011-12-07
--> 测试数据:[获取表] if object_id('[获取表]') is not null drop table [获取表] create table [获取表]([卡号] int,[获取值] int,[年份] int,[月份] int) insert [获取表] select 1102,460,2010,11 union all select 1102,230,2010,11 union all select 1102,530,2010,11 union all select 1102,265,2010,11 union all select 1102,530,2010,11 union all select 1102,230,2010,12 union all select 1102,265,2010,12 union all select 1102,530,2010,12 union all select 1102,530,2010,12 union all select 1102,230,2011,1 union all select 1102,230,2011,1 union all select 1102,460,2011,1 union all select 1102,690,2011,1 union all select 1102,1150,2011,1 union all select 1102,1700,2011,1 union all select 1102,265,2011,1 union all select 1102,1325,2011,1 union all select 1102,1325,2011,1 union all select 1102,1060,2011,2 union all select 1102,530,2011,3 union all select 1102,530,2011,3 union all select 1102,530,2011,4 union all select 1102,795,2011,4 union all select 1102,795,2011,4 union all select 1102,530,2011,4 union all select 1102,530,2011,5 union all select 1102,530,2011,5 union all select 1102,133,2011,5 union all select 1102,266,2011,5 union all select 1102,340,2011,9 union all select 1102,340,2011,10 union all select 1102,340,2011,10 union all select 1102,680,2011,11 --> 测试数据:[兑换表] if object_id('[兑换表]') is not null drop table [兑换表] create table [兑换表]([卡号] int,[兑换值] int,[年份] int,[月份] int) insert [兑换表] select 1102,1920,2010,12 union all select 1102,1512,2011,1 union all select 1102,8550,2011,3 union all select 1102,975,2011,4 union all select 1102,3870,2011,9 union all select 1102,430,2011,10 union all select 1102,916,2011,11 union all select 1102,550,2011,12 select a.[卡号],a.总获取,b.总兑换,剩余=a.总获取-b.总兑换,b.[年份],b.[月份] from ( select [卡号],总获取=sum([获取值]),[年份],[月份] from [获取表] group by [卡号],[年份],[月份] ) a, ( select [卡号],总兑换=sum([兑换值]),[年份],[月份] from [兑换表] group by [卡号],[年份],[月份] ) b where a.[卡号]=b.[卡号] and a.[年份]=b.[年份] and a.[月份]=b.[月份] and a.[年份]=2011 /* 卡号 总获取 总兑换 剩余 年份 月份 ----------- ----------- ----------- ----------- ----------- ----------- 1102 7375 1512 5863 2011 1 1102 1060 8550 -7490 2011 3 1102 2650 975 1675 2011 4 1102 340 3870 -3530 2011 9 1102 680 430 250 2011 10 1102 680 916 -236 2011 11 (6 行受影响) */
作者: Beirut 发布时间: 2011-12-07
作者: HJ_daxian 发布时间: 2011-12-07
SQL code
select a.卡号,sum(a.获取值),sum(b.兑换值),a.年份,a.月份
from 获取表 a left join 兑换表 b on a.卡号=b.卡号 and a.年份=b.年份 and a.月份=b.月份
group by a.卡号,a.年份,a.月份
SQL code
select t1.卡号,t1.总获取,t1.总兑换,(t1.总获取-t1.总兑换) as 剩余,t1.年份,t1.月份 from (select a.卡号,sum(a.获取值) as 总获取,sum(b.兑换值) as 总兑换,a.年份,a.月份 from 获取表 a left join 兑换表 b on a.卡号=b.卡号 and a.年份=b.年份 and a.月份=b.月份 group by a.卡号,a.年份,a.月份) as t1
作者: HJ_daxian 发布时间: 2011-12-07
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28