这样的合并功能用SQL能实现吗?
时间:2011-11-09
来源:互联网
一个账务系统中凭证表中的数据是这样的:
编号 顺序号 代码 部门 借金额 贷金额
101 1 100301 4 500 0
101 2 200001 0 500
102 1 100301 4 300 0
102 2 100301 5 400 0
102 3 200001 0 700
主键为编号+顺序号,一个编号代表一张凭证,顺序号代码一张凭证里的分录,要求不同凭证号如果借方代码和贷方代码相同,就进行合并,合并的结果如下:
编号 顺序号 代码 部门 借金额 贷金额
201 1 100301 4 800 0
201 2 100301 5 400 0
201 3 200001 0 1200
编号 顺序号 代码 部门 借金额 贷金额
101 1 100301 4 500 0
101 2 200001 0 500
102 1 100301 4 300 0
102 2 100301 5 400 0
102 3 200001 0 700
主键为编号+顺序号,一个编号代表一张凭证,顺序号代码一张凭证里的分录,要求不同凭证号如果借方代码和贷方代码相同,就进行合并,合并的结果如下:
编号 顺序号 代码 部门 借金额 贷金额
201 1 100301 4 800 0
201 2 100301 5 400 0
201 3 200001 0 1200
作者: sybase2000 发布时间: 2011-11-09
select 代码,sum(借金额),sum(贷金额) from tb group by 代码
如果部门和编号什么都不同,合并后不能有.
如果部门和编号什么都不同,合并后不能有.
作者: qianjin036a 发布时间: 2011-11-09
select 代码,部门,借金额,贷金额,sum(借金额),sum(贷金额) from tb group by 代码,部门
作者: Beirut 发布时间: 2011-11-09
借方代码和贷方代码这些在哪里体现?
作者: fredrickhu 发布时间: 2011-11-09
SQL code
use Tempdb go --> --> if not object_id(N'Tempdb..#T') is null drop table #T Go Create table #T([编号] int,[顺序号] int,[代码] int,[部门] int,[借金额] int,[贷金额] int) Insert #T select 101,1,100301,4,500,0 union all select 101,2,200001,0,500,null union all select 102,1,100301,4,300,0 union all select 102,2,100301,5,400,0 union all select 102,3,200001,0,700,null Go Select [编号]=MAX([编号]),[顺序号]=MAX([顺序号]),[代码],[部门],SUM([借金额]) AS [借金额],SUM([贷金额]) AS [贷金额] from #T GROUP BY [代码],[部门] ORDER BY 2 /* 编号 顺序号 代码 部门 借金额 贷金额 102 1 100301 4 800 0 102 2 100301 5 400 0 102 3 200001 0 1200 NULL */
作者: roy_88 发布时间: 2011-11-09
谢谢大家的回复,基本有了思路,但可能发贴时没考虑周全,现在重新表述一下:
一个账务系统中凭证表中的数据是这样的(一共有三张凭证上,一个编号代码一张凭证,顺序号代表凭证的分录):
编号 顺序号 代码 部门 借金额 贷金额 摘要
101 1 100301 4 500 0 张三
101 2 200001 0 500
102 1 100301 4 300 0 王五
102 2 100301 5 400 0 陈六
102 3 200001 0 700
103 1 100401 2 600 0 周七
103 2 200801 0 600
主键为编号+顺序号,一个编号代表一张凭证,顺序号代码一张凭证里的分录,要求不同凭证号如果借方代码和贷方代码相同,就进行合并,合并后新的凭证号为这几笔合并凭证中凭证号最大的,有摘要的话进行字符连接,结果如下:
编号 顺序号 代码 部门 借金额 贷金额 摘要
102 1 100301 4 800 0 张三、王五
102 2 100301 5 400 0 陈六
102 3 200001 0 1200
103 1 100401 2 600 0 周七
103 2 200801 0 600
一个账务系统中凭证表中的数据是这样的(一共有三张凭证上,一个编号代码一张凭证,顺序号代表凭证的分录):
编号 顺序号 代码 部门 借金额 贷金额 摘要
101 1 100301 4 500 0 张三
101 2 200001 0 500
102 1 100301 4 300 0 王五
102 2 100301 5 400 0 陈六
102 3 200001 0 700
103 1 100401 2 600 0 周七
103 2 200801 0 600
主键为编号+顺序号,一个编号代表一张凭证,顺序号代码一张凭证里的分录,要求不同凭证号如果借方代码和贷方代码相同,就进行合并,合并后新的凭证号为这几笔合并凭证中凭证号最大的,有摘要的话进行字符连接,结果如下:
编号 顺序号 代码 部门 借金额 贷金额 摘要
102 1 100301 4 800 0 张三、王五
102 2 100301 5 400 0 陈六
102 3 200001 0 1200
103 1 100401 2 600 0 周七
103 2 200801 0 600
作者: sybase2000 发布时间: 2011-11-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28