SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

提出问题:

感谢itpub,感谢北京涅,感谢贵州。

sql起源:信息化检查,高经理让王经理查询一下各个项目部NC的使用情况,也就是查询出各个公司做账到了什么时候,近200个项目,我看到王经理一个个的NC进入,效率太低。

当时想到使用sql。

开始自己搞,可是实在不行,寻找itpub帮助,成功:

select *
  from (select UNITCODE,
               unitname,
               year,
               period,
               num1,
               row_number() over(partition by UNITNAME order by YEAR desc,period desc) mm
          from (select BD_CORP.UNITCODE,
                       bd_corp.unitname,
                       gl_voucher.year,
                       gl_voucher.period,
                       count(*) num1
                  from gl_voucher, bd_corp
                 where bd_corp.pk_corp = gl_voucher.pk_corp
                      and gl_voucher.dr='0'
                 group by BD_CORP.UNITCODE,
                          bd_corp.unitname,
                          gl_voucher.year,
                          gl_voucher.period)
        
        )
 where mm = 1
 ORDER BY UNITCODE;

效果图:

今天群里的上海萝卜提了一个类似要求,我们开始讨论,贵州给了一个sql:

SELECT ID,MIN(data) FROM 表名 GROUP BY ID;

我当时使用无所不能的partition,北京涅居然给我写出了一个简单有效的sql,太厉害(oracle也很厉害,它怎么就能year和period连接到一块,还能保证是一家的呢)。

select BD_CORP.UNITCODE,
       bd_corp.unitname,
       max(gl_voucher.year ||'-'|| gl_voucher.period)最新日期,
       count(*) num1
  from gl_voucher, bd_corp
 where bd_corp.pk_corp = gl_voucher.pk_corp
   and gl_voucher.dr = '0'
 group by BD_CORP.UNITCODE, bd_corp.unitname
 order by BD_CORP.UNITCODE
 结果出来了,发现最新日期都是正确的,可是每月凭证数目前有问题(count(*))

继续研究这个凭证数量

posted on 2012-05-29 22:24  sumsen  阅读(357)  评论(0编辑  收藏  举报