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. 转linq中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take

    Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个. First():操作一个集合,可以有多个对象匹配,但是只返回第一个. Take(1):操作一个集合,可以有对个对象匹配,单只 ...

  2. jQuery 获取checkbox 获取值

    //全选 $("[name='checkbox']").attr("checked",'true'); //取消全选 $("[name='checkb ...

  3. nginx rewrite 指令last break区别最详细的解释

    转自:http://blog.sina.com.cn/s/blog_4f9fc6e10102ux0w.html http://blog.cafeneko.info/2010/10/nginx_rewr ...

  4. bat脚本 -- 初步接触

    服务器上的Tomcat 经常过一段时间就会死掉,为了防治Tomcat突然当掉影响业务,设置一个定时重启计划. bat脚本如下: @echo restart tomcat6 service, log t ...

  5. 开发实时壁纸(Live Wallpapers)

    所谓实时壁纸,就是指手机桌面不再是简单的图片,而是运行中的动画,这个动画是由程序实时绘制的,因此被称为实时壁纸. 为了开发实时壁纸,Android提供了WallpaperService基类,实时壁纸的 ...

  6. EventSource

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. sC#进阶系列——WebApi 接口参数不再困惑:传参详解

    原文:http://www.cnblogs.com/landeanfen/p/5337072.html 一.get请求 对于取数据,我们使用最多的应该就是get请求了吧.下面通过几个示例看看我们的ge ...

  8. ros使用rplidar hector_mapping建地图

    ros中建地图方式有两种: 首先1.首先下载hector_slam包到你工作空间的src下 命令: cd ~/catkin/src git clone https://github.com/tu-da ...

  9. (BFS)uva2554-Snakes & Ladders

    题目地址 不知道究竟是我的代码问题,还是oj出了问题(vjudge上看这道题全都是WA,没有AC的)就连直接用书上的代码都WA. 但还是先放出我这不确定正误的代码,大神路过如果有兴趣可以帮忙看一下. ...

  10. JS判断是否已经到达页面底部

    $(window).scroll(function(){ var scrollTop=$(this).scrollTop(); var scrollHeight=$(document).height( ...