这个超级复杂的合并功能应该怎么实现
时间:2011-11-11
来源:互联网
日期 编号 顺序号 摘要 代码 部门 借金额 贷金额 附件张数
2011-11-1 101 1 张三 100301 4 500 0 2
2011-11-1 101 2 200001 0 500 2
2011-11-2 102 1 李四 100301 4 300 0 3
2011-11-2 102 2 王五 100301 5 400 0 3
2011-11-2 102 3 200001 0 700 3
2011-11-4 103 1 陈六 100301 4 700 0 1
2011-11-4 103 2 200002 700 1
主键为编号+顺序号,一个编号代表一张凭证,顺序号代码一张凭证里的分录,要求不同凭证号如果借方代码和贷方代码相同且借方向相同,就进行合并,合并后生成的凭证中的日期和编号取合并数据中的最大者,摘要按字符串连接处理,附件张数进行累加,比如编号为101的凭证第一条代码为100031,金额为借方500,第二张代码为200001,金额为贷方500,编号为102的凭证代码为100031,金额在借方,200001金额在贷方,因此二张凭证科目相同且借贷方向一致,可以合并;编号为103的凭证虽然代码为100031金额在借方,但贷方科目为200002,与101和102不同相,因此不能合并,
合并结果如下:
日期 编号 顺序号 摘要 代码 部门 借金额 贷金额 附件张数
2011-11-2 102 1 张三、李四 100301 4 800 0 5
2011-11-2 102 2 王五 100301 5 400 0 5
2011-11-2 102 3 200001 0 1200 5
2011-11-4 103 1 陈六 100301 4 700 0 1
2011-11-4 103 2 200002 700 1
作者: sybase2000 发布时间: 2011-11-11
作者: ssp2009 发布时间: 2011-11-11
作者: Haiwer 发布时间: 2011-11-11
作者: Haiwer 发布时间: 2011-11-11
作者: sybase2000 发布时间: 2011-11-11
作者: sybase2000 发布时间: 2011-11-11
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,[摘要] nvarchar(200)) Insert #T select 101,1,100301,4,500,0,N'张三' union all select 101,2,200001,0,500,null,null union all select 102,1,100301,4,300,0,N'王五' union all select 102,2,100301,5,400,0,N'陈六' union all select 102,3,200001,0,700,null,null union all select 103,1,100401,2,600,0,N'周七' union all select 103,2,200801,0,600,null,null Go Select [编号]=MAX([编号]),[顺序号]=MAX([顺序号]),[代码],[部门],SUM([借金额]) AS [借金额],ISNULL(RTRIM(SUM([贷金额])),'') AS [贷金额], ISNULL(STUFF((SELECT ISNULL('、'+[摘要],'') FROM #T WHERE [代码]=a.[代码] AND [部门]=a.[部门] FOR XML PATH('')),1,1,''),'') AS [摘要] from #T AS a GROUP BY [代码],[部门] ORDER BY 1,2 /* 编号 顺序号 代码 部门 借金额 贷金额 摘要 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 */
作者: roy_88 发布时间: 2011-11-11

作者: roy_88 发布时间: 2011-11-11
还有个附件张数没有加?
作者: sybase2000 发布时间: 2011-11-11
我编辑的时候格式是对齐的,一发表就乱了,不知怎么回事
还有个附件张数没有加?
欄位都沒對上,你自己調整一下,沒有值的欄位用null
作者: roy_88 发布时间: 2011-11-11
日期 编号 顺序号 摘要 代码 部门 借金额 贷金额 附件张数
2011-11-1 101 1 张三 100301 4 500 0 2
2011-11-1 101 2 NULL 200001 NULL 0 500 2
2011-11-2 102 1 李四 100301 4 300 0 3
2011-11-2 102 2 王五 100301 5 400 0 3
2011-11-2 102 3 NULL 200001 NULL 0 700 3
2011-11-4 103 1 陈六 100301 4 700 0 1
2011-11-4 103 2 NULL 200002 NULL 0 700 1
合并结果如下:
日期 编号 顺序号 摘要 代码 部门 借金额 贷金额 附件张数
2011-11-2 102 1 张三、李四 100301 4 800 0 5
2011-11-2 102 2 王五 100301 5 400 0 5
2011-11-2 102 3 NULL 200001 NULL 0 1200 5
2011-11-4 103 1 陈六 100301 4 700 0 1
2011-11-4 103 2 NULL 200002 NULL 0 700 1
作者: sybase2000 发布时间: 2011-11-11
作者: sybase2000 发布时间: 2011-11-11
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28