问题的提出是周聪之前问过我的项目往来查询,不好在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解决责任人收支余额的更多相关文章

  1. SQL Server解决孤立用户浅析

    孤立用户概念        所谓孤立用户即指在服务器实例上未定义或错误定义了其相应 SQL Server 登录名的数据库用户无法登录到实例. 这样的用户被称为此服务器实例上的数据库的"孤立用 ...

  2. (转载)sql语句解决分页问题

    <来源网址:http://www.delphifans.com/infoview/Article_353.html>sql语句解决分页问题日期:2005年1月17日 作者:treemon2 ...

  3. 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解决几个方法 十一月 ...

  4. mybatis用logback日志不显示sql的解决办法

    mybatis用logback日志不显示sql的解决方法 1.mybatis-config.xml的设定 关于logimpl的设定值还不支持logback,如果用SLF4J是不好用的. 这是官方文档的 ...

  5. SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题

    目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...

  6. java.sql.Connection解决插入数据库中文乱码问题

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public clas ...

  7. SQL锁死解决办法

    SQL Server 表,记录 死锁解决办法 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的 spid SELECT request_session_id spid,OBJECT_NAME(r ...

  8. SQL:无法解决 equal to 操作的排序规则冲突。

    更改存储过程的时候,在SQL中出现了 “无法解决 equal to 操作的排序规则冲突”错误,网上搜之,发现是表之间元素创建时排序规则不同(一个是collate Chinese_PRC_CI_AI_W ...

  9. Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法

    sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...

随机推荐

  1. (Python)导出指定文件夹中as文件的完全限定类名

    AS3程序在编译的过程中,有一个特点是这样的,不管是项目中的类,还是标准库或者第三方库的类,编译的时候只会把用到的那些类文件编译进去,也就是说,某一些类,只要没有被主程序引用到,那这个文件是不会被编译 ...

  2. C#获取参数getParameter

    昨天遇到了这样一个问题,getParameter时,首次进入页面读取默认值时,本应该读取到“全部”这个字符. 然后在实际读取过程当中却不是这样,实际读取到的是  类的对象值 重新运行时能够读取到 “全 ...

  3. spring boot 初试,springboot入门,springboot helloworld例子

    因为项目中使用了spring boot ,之前没接触过,所以写个helloworld玩玩看,当做springboot的一个入门例子.搜索 spring boot.得到官方地址:http://proje ...

  4. python and django

    [安装(CentOS 6.5)] 安装python, 采用yum install python,安装后为2.6版本 安装django 1.6.4,再高的版本,就需要python提升版本.下载并解压,然 ...

  5. 在 Ubuntu 14.04 中配置 PXE 服务器

    PXE(预启动执行环境Preboot Execution Environment)服务器允许用户从网络中启动 Linux 发行版并且可以不需要 Linux ISO 镜像就能同时在数百台 PC 中安装. ...

  6. jQuery 源码中的 camelCase

    先看一下源码 //65-72行 // Matches dashed string for camelizing //匹配连字符 ‘-’ 和其后的第一个字母或数字,如果是字母,则替换为大写,如果是数字, ...

  7. 1-5Tomcat 目录结构 和 web项目目录结构

    对应我的安装路径: web项目目录结构

  8. NSAssert的使用

    NSAssert的使用   苹果在foundation.framework中定义了这么一个宏: #define NSAssert(condition, desc, ...)   第一个参数为一个条件判 ...

  9. 说说chrome上的JS调试

    步骤:审查元素 ->source->选择js文件 ->设置断点 ->触发函数 ->进入调试点step over 到elements目录下双击某一块代码还可以立刻修改,ct ...

  10. 团队开发——冲刺2.a

    冲刺阶段二(第一天) 1.今天准备做什么? 收集游戏图片:开始.暂停.继续.重新开始.退出……为了界面的后期美工做准备. 2.遇到什么困难? 网上的图片很多,但是比较难找到统一风格的.