oracle中的查询语句(关于出库入库信息表,明细表,把捆包箱表,单位信息表的集中查询)...
--查出所有現(xiàn)金中心的單位ID
with
AllUnit
as(
select t.ORGANIZATIONID orgid,t.parentid
from CDMS_ORGANIZATION t where T.CATEGORY = 4
start with t.organizationid = '05e85693-14b0-4582-8063-8fbde85371f0'
connect by t.parentid = PRIOR t.organizationid),
N_instock
as(
-- instock 完整money,殘損money,字段:入庫單位ID,mone1,money2
select inunitid,(baint+bunint+intaintNum+baoInt) intMoney,(baDMA+BUNDMA+baoDMA) DMAMoney
from(
select tba.INUNITID,
NVL((case ba.ISDAMAGE when 0 then 100*ba.valuta end),0) as BaInt,
NVL((case ba.ISDAMAGE when 1 then 100*ba.valuta end),0) as BaDmA,
NVL((case bun.ISDAMAGE when 0 then 1000*bun.valuta end),0) as BunINT,
NVL((case bun.ISDAMAGE when 1 then 1000*bun.valuta end),0) as BUNDMA,
NVL(inta.COUNTER*inta.VALUTA,0) intaintNUM,NVL(pack.INTACTNUM,0) baoint,
NVL(pack.DAMAGENUM,0) baodma from
(
select it.inunitid,de.barcode,de.UNIT from GZH_INSTOCK it
left join GZH_INSTOCK_DETAIL de on it.BILLID=de.BILLID
--where to_char(it.billdate,'yyyy-MM')='2016-11' and intype='1311'
)tba
left join GZH_BAINFO ba on tba.BARCODE=ba.BARCODE and tba.unit=1
left join GZH_BUNCHINFO bun on tba.BARCODE=bun.BUNCHCODE and tba.unit=2
left join GZH_PACHETINFO pack on tba.barcode=pack.RFIDNO and tba.unit=4
left join GZH_INTACTBOXINFO inta on tba.BARCODE=inta.BARCODE and tba.unit=3
)
)
,
allData
as(
select t.PARENTID,NVL(sum(t1.FLITTINGMONEY),0) outmoney,
NVL(sum(t2.INTMONEY),0) INTMONEY,
NVL(sum(t2.DMAMONEY),0) DMAMONEY from allunit t
left join GZH_outsTOCK t1 on t.orgid=t1.outUNITID
left join N_instock t2 on t.orgid=t2.inUNITID
--where to_char(t1.billdate,'yyyy-MM')='2016-11' and outtype='1321'
group by t.PARENTID
)
,
TFinfo
as
(
select parentid,
decode((select sum(outmoney) from allData),0,0,outmoney/(select sum(outmoney) from allData)) TFscale,
decode((select sum(intmoney) from allData),0,0,intmoney/(select sum(intmoney) from allData)) HLWscale,
decode((select sum(dmamoney) from alldata),0,0,dmamoney/(select sum(dmamoney) from alldata)) HLCscale
from alldata)
select fullname,TFscale 投放占比,HLWscale 回籠完整占比,HLCscale 回籠完整占比
from TFinfo left join cdms_organization
on cdms_organization.organizationid=tfinfo.parentid;
?
上面的這段sql是尹哥教我的,雖然不是自己寫的,但是按照這個(gè)思路,我發(fā)現(xiàn)我之前是對(duì)的,只是對(duì)oracle的認(rèn)識(shí)不夠,寫不出來
今天最主要的是都讓我重新的認(rèn)識(shí)了oracle的查詢,和我之前學(xué)的sql查詢的差距還是挺大的,各種各樣的結(jié)構(gòu)的選擇和各種各樣的代碼的編寫
在計(jì)算比例的時(shí)候,我們先對(duì)數(shù)據(jù)進(jìn)行求和,為了不能表中出現(xiàn)空的字符,我們選用了nvl(字段名,0),這是將空的字符串變?yōu)镺 的語句。
今天我還用了一個(gè)很神奇的方法,decode(a,0,0,b/a*100)這個(gè)是為了不讓除數(shù)為0 的時(shí)候,使oracle報(bào)錯(cuò),這個(gè)讓我的語句更快的寫完。
我將這兩個(gè)用法記錄下來就是為了讓自己能更好的記住這兩個(gè)詞的用法。
?
今天加上一點(diǎn),就是我在這個(gè)sql中的一個(gè)重要的用法case when then end 這個(gè)語句
在我們的這個(gè)sql中,我們使用這個(gè)語句進(jìn)行了數(shù)據(jù)的分類統(tǒng)計(jì),實(shí)現(xiàn)了我們直接在數(shù)據(jù)庫中的操作,對(duì)我們的數(shù)據(jù)進(jìn)行了更好的統(tǒng)計(jì)。(2016-11-28)
轉(zhuǎn)載于:https://www.cnblogs.com/sun1512/p/6105118.html
總結(jié)
以上是生活随笔為你收集整理的oracle中的查询语句(关于出库入库信息表,明细表,把捆包箱表,单位信息表的集中查询)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP unset()函数销毁变量 但没
- 下一篇: CentOS7下安装MySQL5.7安装