sql rollup解决责任人收支余额
问题的提出是周聪之前问过我的项目往来查询,不好在NC上一次性查询到。然后我就搞了一个很长的项目对账,发布了NC的节点。
现在我做了总二的总账,每次领导问我项目还有多少钱,收了多少付了多少,我还要通过科目余额表查询,但是悲剧的是工程施工必须剔除月末配比的暂估,给13打电话,
她也说NC没有法子查询一级科目然后还去掉某一个末级。
查询结果出来之后,我想对一级科目做一个汇总,实现下图的效果

sql外面嵌套了一层,因为发现虽然第一层有了wm_concat,可是使用rollup根本无用,后来发现使用rollup看来必须要对数字列进行聚合sum
select valuecode, valuename,explanation,km,dispname,sum(借方),sum(贷方),yearv,
periodv ,
no from (
select wmsys.wm_concat(gl_freevalue.valuecode) valuecode,
wmsys.wm_concat(gl_freevalue.valuename) valuename,
gl_detail.explanation,
substr(bd_accsubj.dispname,1,4) km,
bd_accsubj.dispname,
gl_detail.debitamount 借方,
gl_detail.creditamount 贷方,
gl_detail.yearv,
gl_detail.periodv ,
gl_voucher.no
from bd_accsubj
join gl_detail
on gl_detail.pk_accsubj = bd_accsubj.pk_accsubj
join bd_glorgbook
on bd_glorgbook.pk_glorgbook = bd_accsubj.pk_glorgbook
join gl_voucher
on gl_detail.pk_voucher = gl_voucher.pk_voucher
left join gl_freevalue
on gl_detail.assid = gl_freevalue.freevalueid
where gl_detail.dr = ''
and gl_detail.yearv>=2014
and gl_detail.pk_systemv!='TR'--去掉年末的结转凭证
and gl_detail.periodv<>'' --去掉期初
and bd_accsubj.subjcode not in('','','','','','','')--去掉月末配比和交税的所得税
and bd_glorgbook.glorgbookcode = '015201-0001'--公司条件
and gl_freevalue.valuecode like '015211%' --项目责任人条件
group by gl_detail.explanation,
bd_accsubj.dispname,
gl_detail.yearv,
gl_detail.periodv,
gl_voucher.no,
gl_detail.creditamount,
gl_detail.debitamount)
group by valuecode, valuename ,km, rollup((explanation,dispname,yearv,periodv,no))
order by valuecode,dispname, yearv, periodv ,no

昨天晚上再次想到一个问题,完全可以不用考虑wm_concat了,因为where条件的valuecode直接限制了工程项目而没有了“部门档案”
这样一来,sql可以这样
select gl_freevalue.valuecode,
gl_freevalue.valuename,
gl_detail.explanation,
substr(bd_accsubj.dispname,1,4) km,
nvl(bd_accsubj.dispname,'小计') 科目,
-- gl_detail.debitamount,
--gl_detail.creditamount,
sum(gl_detail.debitamount) 支出,
sum(gl_detail.creditamount) 收入,
gl_detail.yearv||'-'||gl_detail.periodv 期间,
gl_voucher.no
from bd_accsubj
join gl_detail
on gl_detail.pk_accsubj = bd_accsubj.pk_accsubj
join bd_glorgbook
on bd_glorgbook.pk_glorgbook = bd_accsubj.pk_glorgbook
join gl_voucher
on gl_detail.pk_voucher = gl_voucher.pk_voucher
left join gl_freevalue
on gl_detail.assid = gl_freevalue.freevalueid
where gl_detail.dr = ''
and gl_detail.yearv=2014
and gl_detail.pk_systemv!='TR'--去掉年末的结转凭证
and gl_detail.periodv<>'' --去掉期初
and bd_accsubj.subjcode not in
('','','','','','','')--去掉月末配比和交税的所得税
and bd_glorgbook.glorgbookcode = '015201-0001'--公司条件
and gl_freevalue.valuecode like '015211%' --项目责任人条件
group by substr(bd_accsubj.dispname,1,4),
rollup((gl_freevalue.valuecode,
gl_freevalue.valuename,
gl_detail.explanation,
bd_accsubj.dispname,
gl_detail.yearv,
gl_detail.periodv,
gl_voucher.no ))
order by substr(bd_accsubj.dispname,1,4),gl_freevalue.valuecode,yearv, periodv ,no
通过这个sql对rollup有了进一步的理解,group by rollup中前面的group by要的是根据什么组求和的,就像这里的取前四位的一级会计科目2123 4104,然后后面的就是正常的使用group 必须要写的东西。
之前的小计都是在最后面,最终发现还是order by的问题,排序第一个需要是group by后面的东西才能让小计分组在后面而不是都跑在最后面

分组小计的rollup继续的例子

sql rollup解决责任人收支余额的更多相关文章
- SQL Server解决孤立用户浅析
孤立用户概念 所谓孤立用户即指在服务器实例上未定义或错误定义了其相应 SQL Server 登录名的数据库用户无法登录到实例. 这样的用户被称为此服务器实例上的数据库的"孤立用 ...
- (转载)sql语句解决分页问题
<来源网址:http://www.delphifans.com/infoview/Article_353.html>sql语句解决分页问题日期:2005年1月17日 作者:treemon2 ...
- Error Code: 1064 – You have an error in your SQL syntax解决几个方法
本文转自 http://www.anyiwa.com/?p=1066 Error Code: 1064 – You have an error in your SQL syntax解决几个方法 十一月 ...
- mybatis用logback日志不显示sql的解决办法
mybatis用logback日志不显示sql的解决方法 1.mybatis-config.xml的设定 关于logimpl的设定值还不支持logback,如果用SLF4J是不好用的. 这是官方文档的 ...
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
- java.sql.Connection解决插入数据库中文乱码问题
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public clas ...
- SQL锁死解决办法
SQL Server 表,记录 死锁解决办法 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的 spid SELECT request_session_id spid,OBJECT_NAME(r ...
- SQL:无法解决 equal to 操作的排序规则冲突。
更改存储过程的时候,在SQL中出现了 “无法解决 equal to 操作的排序规则冲突”错误,网上搜之,发现是表之间元素创建时排序规则不同(一个是collate Chinese_PRC_CI_AI_W ...
- Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法
sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...
随机推荐
- “LC.exe”已退出,代码为 -1
造成这个问题的原因一般是引入了第三方插件,自己遇到的问题是引入了devexpress...... 1.找到Properties文件夹licenses.licx文件,然后右键选择删除就可以了,调试运行正 ...
- pc, 手机全屏
全屏 1 div{ position:absolute/relative/fixed; top:0; bottom:0; left:0; right:0;} 2 <!doctype html& ...
- WinForm程序打包说明
如果使用的是VS2013需要下载并安装 Microsoft Visual Studio 2013 Installer Projects 下载地址:https://visualstudiogallery ...
- android代码嵌入html代码
有时候需要在一个TextView控件中设置两种不同颜色的字体,这时候可以使用Html.fromHtml方法实现 例如: tvTaskDesc.setText(Html.fromHtml("当 ...
- K2 BPM打造企业新门户,步入移动办公时代
公司介绍步步高教育电子有限公司(前身为步步高电脑电玩厂)是广东步步高电子工业有限公司属下的三个分公司之一,一直致力于面向广大学生的教育电子产品的研发与生产,主要产品有视频学习机.点读机.学生电脑.语言 ...
- C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用
一.find运算 假设有一个int型的vector对象,名为vec,我们想知道其中是否包含某个特定值. 解决这个问题最简单的方法时使用标准库提供的find运算: 1 // value we'll lo ...
- Jmeter—5 关联 响应数据传递-正则表达式提取器
在测试过程中,遇到一个问题:用户登录成功后服务器会返回一个登录凭证,之后所有的操作都需要带上此凭证.我们怎么获取登录凭证并传递给后续的操作? Jmeter提供了正则表达式提取器,用变量提取参数,后续通 ...
- 2、Linux系统root用户忘记密码的重置方式
.界面按空格暂停,按E .找到UTF-,在后面空格后输入init=/bin/sh 然后CHRL+X启动 .进入到这个界面,输入mount -o remount,rw / .输入passwd..然后输入 ...
- C# .net windows服务启动多个服务 ServiceBase
在windows服务中想要启动多个服务 ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { // new SyncServ ...
- 电子词典的相关子函数db.c程序
整个电子词典是分块做的:包含的Dic_Server.c,Dic_Client.c,db.c,query.c,xprtcl.c,dict.h,xprtcl.h,dict.txt(单词文件) 下面是db. ...