建工发债sql
2015-10-25 14:55
579 查看
管理费用
为了得到科目名称,只好再从外面写一层
去除2012总一,2013总五case增加条件,完美
银行存款的发生额
去除年末调账的项目成本和结算(NC科目余额和投标报表数字不一致)
2015-11-1309:38:00
审计要的项目成本二级明细
三年合一
税务局审计要的营业外支出
改进的工程收款sql:至本年末收款等(强大大大大大大)
收入成本合成
加上发包方
各种税(使用余额表)
完成每个公司前100付款客商
直接orderby的话出现的结果只有钢结构,因此需要partition才能出现各个公司的前100
使用partition必须orderby,并且从大到小排练还要desc(默认asc从小到大)
供应商top
增加日期:andarap_djzb.djrqbetween'2015-01-01'and'2015-09-31'
劳务收入明细2016.3.7
转
Oracle中rank()over,dense_rank(),row_number()的区别
假设现在有一张学生表student,学生表中有姓名、分数、课程编号,现在我需要按照课程对学生的成绩进行排序。
select*fromstudent
1.rankover()可以实现对学生排名,特点是成绩相同的两名是并列,如下12245
selectname,
course,
rank()over(partitionbycourseorderbyscoredesc)asrank
fromstudent;
2.dense_rank()和rankover()很像,但学生成绩并列后并不会空出并列所占的名次,如下12234
selectname,
course,
dense_rank()over(partitionbycourseorderbyscoredesc)asrank
fromstudent;
3.row_number这个函数不需要考虑是否并列,那怕根据条件查询出来的数值相同也会进行连续排名
selectname,
course,
row_number()over(partitionbycourseorderbyscoredesc)asrank
fromstudent;
答疑:
1.partitionby用于给结果集进行分区。
2.partitionby和groupby有何区别?
partitionby只是将原始数据进行名次排列(记录数不变)
groupby是对原始数据进行聚合统计(记录数可能变少,每组返回一条)
3.使用rankover()的时候,空值是最大的,如果排序字段为null,可能造成null字段排在最前面,影响排序结果。
可以这样:rankover(partitionbycourseorderbyscoredescnullslast)
为了得到科目名称,只好再从外面写一层
selecta.*, (selectb.subjnamefrombd_accsubjbwhereb.subjcode=a.scodeandb.pk_glorgbook='0001E1100000000000MX')项目--从总部机关的会计科目得到名称 from( selectsubstr(bd_accsubj.subjcode,1,6)scode, sum(casewhengl_balance.year='2014'thengl_balance.debitamountelse0end)"2014发生额", sum(casewhengl_balance.year='2013'thengl_balance.debitamountelse0end)"2013发生额", sum(casewhengl_balance.year='2012'thengl_balance.debitamountelse0end)"2012发生额" fromgl_balance,bd_accsubj,bd_glorgbook wheregl_balance.pk_accsubj=bd_accsubj.pk_accsubj andbd_glorgbook.pk_glorgbook=gl_balance.pk_glorgbook andbd_glorgbook.glorgbookcodelike'01%-0001' and(bd_accsubj.subjcodelike'5502%') andgl_balance.period<>'00' andgl_balance.yearin('2012','2013','2014') groupbysubstr(bd_accsubj.subjcode,1,6) orderbysubstr(bd_accsubj.subjcode,1,6))a orderbya.scode
去除2012总一,2013总五case增加条件,完美
selecta.*,b.subjnamefrom( selectsubstr(bd_accsubj.subjcode,1,6)scode, sum(casewhengl_balance.year='2012'andbd_glorgbook.glorgbookcode<>'015101-0001'thengl_balance.debitamountelse0end)"2012发生额", sum(casewhengl_balance.year='2013'andbd_glorgbook.glorgbookcode<>'015501-0001'thengl_balance.debitamountelse0end)"2013发生额", sum(casewhengl_balance.year='2014'thengl_balance.debitamountelse0end)"2014发生额" fromgl_balance,bd_accsubj,bd_glorgbook wheregl_balance.pk_accsubj=bd_accsubj.pk_accsubj andbd_glorgbook.pk_glorgbook=gl_balance.pk_glorgbook andbd_glorgbook.glorgbookcodelike'01%-0001' and(bd_accsubj.subjcodelike'5502%') andgl_balance.period<>'00' andgl_balance.yearin('2012','2013','2014') groupbysubstr(bd_accsubj.subjcode,1,6) orderbysubstr(bd_accsubj.subjcode,1,6))a,bd_accsubjb wherea.scode=b.subjcode andb.pk_glorgbook='0001E1100000000000MX' orderbya.scode
银行存款的发生额
selectbd_accsubj.subjcode,bd_accsubj.subjname, sum(casewhengl_balance.year='2014'thengl_balance.debitamountelse0end)"2014借方发生额", sum(casewhengl_balance.year='2014'thengl_balance.creditamountelse0end)"2014贷方发生额", sum(casewhengl_balance.year='2013'thengl_balance.debitamountelse0end)"2013借方发生额", sum(casewhengl_balance.year='2013'thengl_balance.creditamountelse0end)"2013贷方发生额", sum(casewhengl_balance.year='2012'thengl_balance.debitamountelse0end)"2012借方发生额", sum(casewhengl_balance.year='2012'thengl_balance.creditamountelse0end)"2012贷方发生额" fromgl_balance,bd_accsubj,bd_glorgbook wheregl_balance.pk_accsubj=bd_accsubj.pk_accsubj andbd_glorgbook.pk_glorgbook=gl_balance.pk_glorgbook andbd_glorgbook.glorgbookcode='030101-0001' and(bd_accsubj.subjcodelike'1002%') andgl_balance.period<>'00' andgl_balance.yearin('2012','2013','2014') groupbybd_accsubj.subjcode,bd_accsubj.subjname orderbybd_accsubj.subjcode
去除年末调账的项目成本和结算(NC科目余额和投标报表数字不一致)
selectglorgbookcode,nvl(replace(glorgbookname,'集团基准账薄',''),'小计')公司名称, valuecode,valuename,sum(借方)成本,sum(贷方)收入from (selectgl_freevalue.valuecode, gl_freevalue.valuename, gl_detail.prepareddatev制单日期, gl_voucher.no凭证号, gl_detail.explanation, bd_accsubj.dispname, gl_detail.debitamount借方, gl_detail.creditamount贷方, gl_detail.pk_systemv, gl_voucher.pk_voucher, bd_glorgbook.glorgbookcode, bd_glorgbook.glorgbookname fromgl_detail,bd_accsubj,bd_glorgbook,gl_freevalue,gl_voucher wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook andgl_detail.assid=gl_freevalue.freevalueid andgl_detail.pk_voucher=gl_voucher.pk_voucher andgl_detail.dr='0' andgl_detail.yearv='2013' andbd_glorgbook.glorgbookcode='010201-0001' andlength(gl_freevalue.valuecode)=10 and(bd_accsubj.subjcodelike'2123%'orbd_accsubj.subjcodelike'4104%')--只要工程施工和工程结算 andgl_voucher.discardflag='N'--不能是作废的凭证 andgl_detail.pk_systemvnotin('gl','TR')--去除gl(小写期初),大写手工录入,TR自定义结转 andgl_detail.pk_vouchernotin('1038N51000000000RIGV','1038N51000000000RIKG','1038N51000000000RIM3') --去除北京分包项目结算('1038N51000000000RIGV')、税金('1038N51000000000RIKG')、成本('1038N51000000000RIM3') orderbygl_detail.yearv,gl_detail.periodv,bd_accsubj.dispname,gl_voucher.no) groupbyglorgbookcode,rollup((glorgbookname,valuecode,valuename)) orderbyglorgbookcode,valuecode
2015-11-1309:38:00
审计要的项目成本二级明细
selectglorgbookcode,glorgbookname,valuecode,valuename, substr(subjcode,1,8)科目编码,subjname科目名称,sum(借方)成本from (selectgl_freevalue.valuecode, gl_freevalue.valuename, gl_detail.prepareddatev制单日期, gl_voucher.no凭证号, gl_detail.explanation, bd_accsubj.subjcode, bd_accsubj.subjname, gl_detail.debitamount借方, gl_detail.creditamount贷方, gl_detail.pk_systemv, gl_voucher.pk_voucher, bd_glorgbook.glorgbookcode, bd_glorgbook.glorgbookname fromgl_detail,bd_accsubj,bd_glorgbook,gl_freevalue,gl_voucher wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook andgl_detail.assid=gl_freevalue.freevalueid andgl_detail.pk_voucher=gl_voucher.pk_voucher andgl_detail.dr='0' andgl_detail.yearv='2013' andbd_glorgbook.glorgbookcodelike'01%-0001' andlength(gl_freevalue.valuecode)=10 and(bd_accsubj.subjcodelike'410401%')--工程施工总包二级明细 andgl_voucher.discardflag='N'--不能是作废的凭证 andgl_detail.pk_systemvnotin('gl','TR')--去除gl(小写期初),大写手工录入,TR自定义结转 orderbygl_detail.yearv,gl_detail.periodv,gl_voucher.no) groupbyglorgbookcode,glorgbookname,valuecode,valuename,substr(subjcode,1,8),subjname orderbyglorgbookcode,valuecode,substr(subjcode,1,8)
三年合一
selectbd_glorgbook.glorgbookcode, bd_glorgbook.glorgbookname, gl_freevalue.valuecode, gl_freevalue.valuename, substr(subjcode,1,8), bd_accsubj.subjname, sum(casewhengl_detail.yearv='2012'thengl_detail.debitamountelse0end)"2012发生额", sum(casewhengl_detail.yearv='2013'thengl_detail.debitamountelse0end)"2013发生额", sum(casewhengl_detail.yearv='2014'thengl_detail.debitamountelse0end)"2014发生额" fromgl_detail,bd_accsubj,bd_glorgbook,gl_freevalue,gl_voucher wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook andgl_detail.assid=gl_freevalue.freevalueid andgl_detail.pk_voucher=gl_voucher.pk_voucher andgl_detail.dr='0' andbd_glorgbook.glorgbookcodelike'01%-0001' andlength(gl_freevalue.valuecode)=10 and(bd_accsubj.subjcodelike'410401%')--工程施工总包二级明细 andgl_voucher.discardflag='N'--不能是作废的凭证 andgl_detail.pk_systemvnotin('gl','TR')--去除gl(小写期初),大写手工录入,TR自定义结转 groupbyglorgbookcode,glorgbookname,valuecode,valuename,substr(bd_accsubj.subjcode,1,8),subjname orderbyglorgbookcode,valuecode,substr(subjcode,1,8)
税务局审计要的营业外支出
selectbd_glorgbook.glorgbookcode,
bd_glorgbook.glorgbookname,
gl_detail.prepareddatev制单日期,
gl_voucher.no凭证号,
gl_detail.explanation摘要,
bd_accsubj.dispname科目,
gl_detail.debitamount发生额
fromgl_detail,bd_accsubj,bd_glorgbook,gl_voucher
wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj
andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook
andgl_detail.pk_voucher=gl_voucher.pk_voucher
andgl_detail.dr='0'
andgl_detail.yearvin('2011','2012','2013','2014')
andbd_glorgbook.glorgbookcodelike'01%01-0001'
andbd_accsubj.subjcodelike'5601%'
andgl_voucher.discardflag='N'--不能是作废的凭证
andgl_detail.pk_systemvnotin('gl','TR')--去除gl(小写期初),大写手工录入,TR自定义结转
orderbygl_detail.yearv,bd_glorgbook.glorgbookcode,gl_detail.periodv,gl_voucher.no
改进的工程收款sql:至本年末收款等(强大大大大大大)
selectbd_glorgbook.glorgbookcode,
bd_glorgbook.glorgbookname,
gl_freevalue.valuecode,
gl_freevalue.valuename,
sum(casewhengl_detail.yearv<=2014thengl_detail.creditamountelse0end)"至本年末收款",
sum(casewhengl_detail.yearv<2014thengl_detail.creditamountelse0end)"至上年末收款",
sum(casewhengl_detail.yearv=2014thengl_detail.creditamountelse0end)"本年收款"
fromgl_detail,bd_accsubj,bd_glorgbook,gl_freevalue,gl_voucher
wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj
andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook
andgl_detail.assid=gl_freevalue.freevalueid
andgl_detail.pk_voucher=gl_voucher.pk_voucher
andgl_detail.dr='0'
andbd_glorgbook.glorgbookcodelike'01%-0001'
andlength(gl_freevalue.valuecode)=10
and(bd_accsubj.subjcodelike'2123%')--工程施工总包二级明细
andgl_voucher.discardflag='N'--不能是作废的凭证
andgl_detail.pk_systemvnotin('gl','TR')--去除gl(小写期初),大写手工录入,TR自定义结转
groupbyglorgbookcode,glorgbookname,valuecode,valuename
orderbyglorgbookcode,valuecode
收入成本合成
select*from(
selectbd_glorgbook.glorgbookcode,
bd_glorgbook.glorgbookname,
gl_freevalue.valuecode,
gl_freevalue.valuename,
sum(casewhengl_detail.yearv=2012thengl_detail.creditamountelse0end)INCOME,
sum(casewhengl_detail.yearv=2012thengl_detail.debitamountelse0end)COST
fromgl_detail,bd_accsubj,bd_glorgbook,gl_freevalue,gl_voucher
wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj
andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook
andgl_detail.assid=gl_freevalue.freevalueid
andgl_detail.pk_voucher=gl_voucher.pk_voucher
andgl_detail.dr='0'
andbd_glorgbook.glorgbookcodelike'03%-0001'
andlength(gl_freevalue.valuecode)=10
and(bd_accsubj.subjcodelike'2123%'orbd_accsubj.subjcodelike'4104%')--工程施工总包二级明细
andgl_voucher.discardflag='N'--不能是作废的凭证
andgl_detail.pk_systemvnotin('gl','TR')--去除gl(小写期初),大写手工录入,TR自定义结转
groupbyglorgbookcode,glorgbookname,valuecode,valuename)
whereINCOME<>0ORCOST<>0
orderbyglorgbookcode,valuecode
加上发包方
selecta.*,b.def1from
(select*from(
selectbd_glorgbook.glorgbookcode,
bd_glorgbook.glorgbookname,
gl_freevalue.valuecode,
gl_freevalue.valuename,
sum(casewhengl_detail.yearv=2015thengl_detail.creditamountelse0end)INCOME,
sum(casewhengl_detail.yearv=2015thengl_detail.debitamountelse0end)COST
fromgl_detail,bd_accsubj,bd_glorgbook,gl_freevalue,gl_voucher
wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj
andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook
andgl_detail.assid=gl_freevalue.freevalueid
andgl_detail.pk_voucher=gl_voucher.pk_voucher
andgl_detail.dr='0'
andbd_glorgbook.glorgbookcodelike'03%01-0001'
andlength(gl_freevalue.valuecode)=10
and(bd_accsubj.subjcodelike'2123%'orbd_accsubj.subjcodelike'4104%')--工程施工总包二级明细
andgl_voucher.discardflag='N'--不能是作废的凭证
andgl_detail.pk_systemvnotin('gl','TR')--去除gl(小写期初),大写手工录入,TR自定义结转
groupbyglorgbookcode,glorgbookname,valuecode,valuename)
whereINCOME<>0ORCOST<>0)a,bd_jobbasfilb
wherea.valuecode=b.jobcode
orderbyglorgbookcode,valuecode
各种税(使用余额表)
selectbd_accsubj.subjcode,bd_accsubj.dispname,
sum(casewhengl_balance.year='2012'thengl_balance.debitamountelse0end)"2012发生额",
sum(casewhengl_balance.year='2013'thengl_balance.debitamountelse0end)"2013发生额",
sum(casewhengl_balance.year='2014'thengl_balance.debitamountelse0end)"2014发生额"
fromgl_balance,bd_accsubj,bd_glorgbook
wheregl_balance.pk_accsubj=bd_accsubj.pk_accsubj
andbd_glorgbook.pk_glorgbook=gl_balance.pk_glorgbook
andbd_glorgbook.glorgbookcodelike'01%-0001'
and(bd_accsubj.subjcodelike'2171%'orbd_accsubj.subjcodelike'2176%')
andgl_balance.period<>'00'
andgl_balance.yearin('2012','2013','2014')
groupbybd_accsubj.subjcode,bd_accsubj.dispname
orderbybd_accsubj.subjcode
完成每个公司前100付款客商
select*from(
selectTA.*,rank()over(partitionby付款单位orderby付款总金额desc)rnfrom
(
selectdistinctbd_corp.unitcode,bd_corp.unitnameas付款单位,
bd_cubasdoc.custcodeas收款单位编码,bd_cubasdoc.custnameas收款单位名称,
sum(arap_djfb.bbye)over(partitionbybd_corp.unitcode,bd_cubasdoc.custcode)as付款总金额
frombd_cubasdoc,arap_djfb,bd_cumandoc,arap_djzb,bd_corp
wherearap_djfb.ksbm_cl=bd_cumandoc.pk_cumandoc
andbd_cumandoc.pk_cubasdoc=bd_cubasdoc.pk_cubasdoc
andarap_djfb.vouchid=arap_djzb.vouchid
andbd_corp.pk_corp=arap_djzb.dwbm
andarap_djfb.payflagin('1','2')
andarap_djfb.dr='0'
andlength(bd_cubasdoc.custname)>3
andlength(bd_cubasdoc.custcode)<>6
andbd_corp.unitcodenotin('0100','010101'))TA)
wherern<=100
直接orderby的话出现的结果只有钢结构,因此需要partition才能出现各个公司的前100
使用partition必须orderby,并且从大到小排练还要desc(默认asc从小到大)
供应商top
select
bd_cubasdoc.custcodeas收款单位编码,bd_cubasdoc.custnameas收款单位名称,
sum(arap_djfb.bbye)收款总金额
frombd_cubasdoc,bd_cumandoc,arap_djfb,arap_djzb
wherearap_djfb.ksbm_cl=bd_cumandoc.pk_cumandoc
andbd_cumandoc.pk_cubasdoc=bd_cubasdoc.pk_cubasdoc
andarap_djfb.vouchid=arap_djzb.vouchid
andarap_djfb.payflagin('1','2')
andarap_djfb.dr='0'
andlength(bd_cubasdoc.custname)>3
andlength(bd_cubasdoc.custcode)notin(6,4)
andarap_djzb.djkjnd=2014
groupbybd_cubasdoc.custcode,bd_cubasdoc.custname,arap_djfb.bbye
orderbysum(arap_djfb.bbye)desc
增加日期:andarap_djzb.djrqbetween'2015-01-01'and'2015-09-31'
劳务收入明细2016.3.7
selectbd_glorgbook.glorgbookcode,bd_glorgbook.glorgbookname,gl_detail.prepareddatev制单日期,
gl_detail.explanation,
gl_voucher.no凭证号,
bd_accsubj.dispname,
gl_detail.creditamount工程款
fromgl_detail,bd_accsubj,bd_glorgbook,gl_voucher
wheregl_detail.pk_accsubj=bd_accsubj.pk_accsubj
andgl_detail.pk_glorgbook=bd_glorgbook.pk_glorgbook
andgl_detail.pk_voucher=gl_voucher.pk_voucher
andgl_detail.dr='0'
andgl_detail.periodv<>'00'
andgl_detail.yearv='2015'
andbd_glorgbook.glorgbookcodelike'03%01-0001'
andbd_accsubj.subjcodelike'2123%'
andgl_detail.creditamount<>0
--and(gl_voucher.no='263'orgl_voucher.no='207')
--andbd_accsubj.subjcodelike'150103%'
orderbybd_glorgbook.glorgbookcode,gl_detail.prepareddatev
转
假设现在有一张学生表student,学生表中有姓名、分数、课程编号,现在我需要按照课程对学生的成绩进行排序。
select*fromstudent
1.rankover()可以实现对学生排名,特点是成绩相同的两名是并列,如下12245
selectname,
course,
rank()over(partitionbycourseorderbyscoredesc)asrank
fromstudent;
2.dense_rank()和rankover()很像,但学生成绩并列后并不会空出并列所占的名次,如下12234
selectname,
course,
dense_rank()over(partitionbycourseorderbyscoredesc)asrank
fromstudent;
3.row_number这个函数不需要考虑是否并列,那怕根据条件查询出来的数值相同也会进行连续排名
selectname,
course,
row_number()over(partitionbycourseorderbyscoredesc)asrank
fromstudent;
答疑:
1.partitionby用于给结果集进行分区。
2.partitionby和groupby有何区别?
partitionby只是将原始数据进行名次排列(记录数不变)
groupby是对原始数据进行聚合统计(记录数可能变少,每组返回一条)
3.使用rankover()的时候,空值是最大的,如果排序字段为null,可能造成null字段排在最前面,影响排序结果。
可以这样:rankover(partitionbycourseorderbyscoredescnullslast)
相关文章推荐
- linux centos 7安装 mariadb
- 常用的oracle数据字典
- Windows下Memcache的安装及PHP扩展配置方法
- mysql数据库的导入导出
- oracle之事务和锁
- MySQL 存储过程检测表是否存在
- Oracle 的数据类型
- sql server 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
- 全球数据库-->基金/管理产品-->分类/行业平均-->开放式分类
- 全球数据库
- 全球数据库-->基金/管理产品-->分类/行业平均
- 全球数据库-->基金/管理产品-->基金分析/新闻/报告
- 解决mongodb设备mongod命令不是内部或外部的命令
- 创建一个已经存在数据的MySQL复制
- Erlang数据库Mnesia操作
- redis一些有趣也很有用的功能
- Linux中oracle数据库执行DBCA,NETMGR,EM等中文乱码问题解决方法
- MySQL 存储过程
- MySQL的一些备忘技巧
- MySQL数据库常用SQL语句