您的位置:首页 > 数据库

建工发债sql

2015-10-25 14:55 579 查看
管理费用

为了得到科目名称,只好再从外面写一层

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




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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: