2、集团主要的供应商(按物资分类列举前10或20家名单),年采购金额、占比,结算方式,付款周期;(夏)

年份要求是2013年

arap_djfb中的单据日期不是常规的日期类型

需要做这样的转换才可以

select to_char(to_date(billdate,'yyyy,mm,dd'),'yyyy' )from arap_djfb  

按照材料类别的分类需要截取字段的后两位

select  areaclcode,substr(bd_areacl.areaclcode,-2), substr(bd_areacl.areaclcode,length(bd_areacl.areaclcode)-1,2) from bd_areacl

感谢影哥的-2,我搞复杂了

sql如下

select --arap_djzb.djbh 单据编号,
--arap_djfb.billdate as 单据日期,
--bd_corp.unitname as 付款单位,
-- arap_djfb.zy as 付款摘要,
sum(arap_djfb.bbye) as allmoney ,
--arap_djfb.fkyhmc as 付款银行名称,
--(select bankacc from bd_accbank where pk_accbank = arap_djfb.fkyhzh) 付款银行账号,
--bd_cubasdoc.custcode as 收款单位编码,
--bd_cubasdoc.custname as 收款单位名称,
bd_accbank.unitname 收款单位名称,
--bd_accbank.bankname as 收款银行名称,
--bd_accbank.bankacc as 收款银行账号,
bd_areacl.areaclcode,
bd_areacl.areaclname
-- arap_djfb.payflag
from bd_cubasdoc, arap_djfb, bd_cumandoc, arap_djzb, bd_corp, bd_accbank,bd_areacl
where arap_djfb.ksbm_cl = bd_cumandoc.pk_cumandoc
and bd_cumandoc.pk_cubasdoc = bd_cubasdoc.pk_cubasdoc
and arap_djfb.vouchid = arap_djzb.vouchid
and bd_corp.pk_corp = arap_djzb.dwbm
and bd_accbank.pk_accbank = arap_djfb.skyhzh
and bd_areacl.pk_areacl=bd_cubasdoc.pk_areacl
and arap_djfb.payflag in ('', '')
and arap_djfb.dr = ''
--and (select bankacc from bd_accbank where pk_accbank = arap_djfb.fkyhzh) ='32001735038059899999'
--and bd_corp.unitcode='010201'
and substr(arap_djfb.billdate,1,4)=''
and bd_areacl.areaclcode<>''
and length(bd_accbank.unitname)>3
and bd_accbank.unitname not like '江苏省建工%'
--and bd_areacl.areaclname like '%沧州%'
-- and bd_cubasdoc.custcode = '17051211693'
group by bd_accbank.unitname, bd_areacl.areaclcode, bd_areacl.areaclname order by substr(bd_areacl.areaclcode,-2), allmoney desc

昨天晚上想到oracle应该可以分组取前20,于是百度,果然找到了itpub

http://www.itpub.net/thread-1290416-1-1.html

row_number()over(partition by substr(areaclcode,-2) order by allmoney desc) c1 这里c1不可以直接放在where条件,必须再嵌套一次

dense_rank()over也行

 select * from (
select allmoney,unitname,areaclcode,areaclname,
row_number()over(partition by substr(areaclcode,-2) order by allmoney desc) c1 from
(select --arap_djzb.djbh 单据编号,
--arap_djfb.billdate as 单据日期,
--bd_corp.unitname as 付款单位,
-- arap_djfb.zy as 付款摘要,
sum(arap_djfb.bbye) as allmoney ,
--arap_djfb.fkyhmc as 付款银行名称,
--(select bankacc from bd_accbank where pk_accbank = arap_djfb.fkyhzh) 付款银行账号,
--bd_cubasdoc.custcode as 收款单位编码,
--bd_cubasdoc.custname as 收款单位名称,
bd_accbank.unitname ,
--bd_accbank.bankname as 收款银行名称,
--bd_accbank.bankacc as 收款银行账号,
bd_areacl.areaclcode,
bd_areacl.areaclname
-- arap_djfb.payflag
from bd_cubasdoc, arap_djfb, bd_cumandoc, arap_djzb, bd_corp, bd_accbank,bd_areacl
where arap_djfb.ksbm_cl = bd_cumandoc.pk_cumandoc
and bd_cumandoc.pk_cubasdoc = bd_cubasdoc.pk_cubasdoc
and arap_djfb.vouchid = arap_djzb.vouchid
and bd_corp.pk_corp = arap_djzb.dwbm
and bd_accbank.pk_accbank = arap_djfb.skyhzh
and bd_areacl.pk_areacl=bd_cubasdoc.pk_areacl
and arap_djfb.payflag in ('', '')
and arap_djfb.dr = ''
--and (select bankacc from bd_accbank where pk_accbank = arap_djfb.fkyhzh) ='32001735038059899999'
--and bd_corp.unitcode='010201'
and substr(arap_djfb.billdate,1,4)=''
and bd_areacl.areaclcode<>''
and length(bd_accbank.unitname)>3
and bd_accbank.unitname not like '江苏省建工%'
--and bd_areacl.areaclname like '%沧州%'
-- and bd_cubasdoc.custcode = '17051211693'
group by bd_accbank.unitname, bd_areacl.areaclcode, bd_areacl.areaclname order by substr(bd_areacl.areaclcode,-2), allmoney desc))
where c1<=20

物流公司统计按物资类别采购的前二十家sql的更多相关文章

  1. destoon信息或者公司归属多个类别的解决方式

    有时候,一条信息属对应于多个类别,在destoon原生系统里是没有这个解决方案 在公司行业类别选择的地方实现了这个功能,但是选择体验不太好,不符合我当前的需求,目前我写了如下解决方案 系统代码如下: ...

  2. win8扁平风格的物流公司网站后台管理模板——后台

    链接:http://pan.baidu.com/s/1o79Zp2M 密码:tqrz

  3. K2 BPM_采购端到端解决方案,激活合规采购新动能_十年专注业务流程管理系统

    「方案背景」企业管理标准化演进之路 企业的成长离不开标准化,企业的可持续发展更离不开标准化.随着市场竞争的日趋激烈,标准化已经成为企业参与市场竞争的战略性手段,也成为企业可持续发展的重要手段.聚焦到采 ...

  4. 数据可视化之powerBI技巧(二十)采悟:创建度量值,轻松进行分组统计

    上一篇文章中的分组,都是通过新建列的方式实现的,直观上比较容易理解.不过这样都修改了原始数据的结构,如果我们不在源表上进行修改,直接通过度量值的方式来进行分组,是否可以实现呢? 答案当然是肯定的. 采 ...

  5. Oracle学习笔记四 SQL命令(二):SQL操作语言类别

    SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...

  6. 统计某一字段等于不同值的个数的sql语句(分享)

    本文介绍下,用一条sql语句统计某一字段等于不同值的个数,方法很独特,有需要的朋友参考下. 表t,数据:  id      type001     1001     0002     1001     ...

  7. Java进阶(二十六)公司项目开发知识点回顾

    公司项目开发知识点回顾 前言 "拿来主义"在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪. 在一次实验过程中,需要实现数据库的CRUD操作.由于之前项目开发过程中, ...

  8. 统计一个数据库中,无记录的表的sql语句

    SQL Server数据库中统计无记录数的表 大家使用的时候,将sql脚本中的红色[TestDB] 换成你的目标数据库名称. /************************************ ...

  9. 二十、dbms_stats(用于搜集,查看,修改数据库对象的优化统计信息)

    1.概述 作用:用于搜集,查看,修改数据库对象的优化统计信息. 2.包的组成 1).get_column_stats作用:用于取得列的统计信息语法:dbms_stats.get_column_stat ...

随机推荐

  1. android 导入自己的生成的jar,老是 could not find class

    最近开始学习android,开发一个小项目,功能很简单,就是从服务器上获取数据,之后显示在手机上.打算把访问服务器的功能打包成一个jar文件.然后android 引入jar包. 在eclipse 里 ...

  2. nginx root&alias文件路径配置

    转:https://www.ttlsa.com/nginx/nginx-root_alias-file-path-configuration/ 总结: alias 改变了访问路径.root对应loca ...

  3. [转]为什么不能用memcached存储Session

    以下内容转自:http://www.infoq.com/cn/news/2015/01/memcached-store-session -------------------------分割线---- ...

  4. hdu 4747 Mex

    http://acm.hdu.edu.cn/showproblem.php?pid=4747 设我们输入的数组为 a[],我们需要从 1 到 n 遍历, 假设遍历到 i 时, 遍历的过程中用b[j]表 ...

  5. Appium移动自动化测试(一)--安装Appium

    Appium 自动化测试是很早之前就想学习和研究的技术了,可是一直抽不出一块完整的时间来做这件事儿.现在终于有了. 反观各种互联网的招聘移动测试成了主流,如果再不去学习移动自动化测试技术将会被淘汰. ...

  6. oracle生成行方法

    数据库记录是行的集合 set of row, 那么如何如何生成集合呢? oracle中常用的是 递归查询(with ... union all ...) 以及 connect by(树形查询) htt ...

  7. RoseRT 建模学习

    目录: 一.RoseRT理论知识 二.一个完整模型的建立 三.TD-SCDMA(UE侧)RRC层建模的学习 四.LTE的RRC层建模(1.自主完成‘2.也可以是L2) 五.参考文献 一.RoseRT理 ...

  8. jquery元素插入、删除、清空

    1)jquery元素插入 <!--位置1--> <div id='test'> <!--位置2--> <div>测试</div> <! ...

  9. 为什么在保护模式下IA-32处理器最高可访问4GB的内存

    在保护模式下,IA-32处理器可访问最高达4GB的内存,这是32位无符号二进制整数地址能够寻址的上限.  今天看汇编的时候发现书里带过一句,不太明白为什么内存上限是4GB,就搜了一下,总结了一下答案. ...

  10. Android 学习第2课,下载 eclipse 工具

    可以到http://www.ddooo.com/softdown/61745.htm 下载下来是32位与64位都有的 而且是汉化的,经测试成功,还可以,不错!