1,成本處理器處理需要計算成本的庫存事務,根據(jù)庫存事務生成CTCD
主要從事網(wǎng)頁設計、PC網(wǎng)站建設(電腦版網(wǎng)站建設)、wap網(wǎng)站建設(手機版網(wǎng)站建設)、響應式網(wǎng)站建設、程序開發(fā)、微網(wǎng)站、小程序制作等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)積累了豐富的成都網(wǎng)站建設、成都網(wǎng)站設計、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設計、營銷、管理等多方位專業(yè)化運作于一體,具備承接不同規(guī)模與類型的建設項目的能力。
數(shù)據(jù)
2,根據(jù)CTCD數(shù)據(jù)生成CACD數(shù)據(jù)
如果CTCD中存在數(shù)據(jù)則,
CACD.actual_cost = CTCD.transaction_cost
CACD.prior_cost = 0
CACD.new_cost = null
否則,使用默認成本(當前平均成本)
如果CLCD中有數(shù)據(jù),取CLCD中的數(shù)據(jù)插入CACD表中
CACD.actual_cost = CLCD.item_cost
CACD.prior_cost = CLCD.item_cost
CACD.new_cost = CLCD.item_cost
如果CLCD中沒有數(shù)據(jù)(第一次發(fā)生庫存事務),插入一條記錄到CACD中
CACD.actual_cost = 0
CACD.prior_cost = null
CACD.new_cost = 0這種情況一般不會發(fā)生
3,根據(jù)是否使用默認成本
如果否的話,對CACD中記錄進行更新,計算CACD.new_cost物料新成本,
和CACD.variance_amount差異金額
如果是的話,平均成本無需重新計算,系統(tǒng)直接更新CQL中的數(shù)量
4,更新CST_ITEM_COSTS中數(shù)據(jù),計算整個組織的平均成本
可以通過district來取出字段,之后通過count計算總數(shù)量。
sql:select count(district id) from tablename;
如果id字段沒有空值的話,可以通過count統(tǒng)計字段的總數(shù)量(字段內容可能重復)。
sql:select count(id) from tablename;
oracle周數(shù)計算
===========================================================
作者: keyneslin()
發(fā)表于: :
分類: ORACLE
出處:
================================================
日期計算 算第n周的第一天及最后一天是幾號 ? by keynes
================================================
ww的算法為每年 月 日為第一周開始 date+ 為每一周結尾
例如 為第一周的第一天 而第一周的最后一天為 + =
公式 每周第一天? date + 周 *
每周最后一天 date + 周 *
不管怎么編排格式都會跑掉 真氣人 ~~
=========================================================================
日期計算 算第n周的第一天及最后一天是幾號 ? by keynes
=========================================================================
ww的算法為每年 月 日為第一周開始 date+ 為每一周結尾
例如 為第一周的第一天 而第一周的最后一天為 + =
公式 每周第一天? date + 周 *
每周最后一天 date + 周 *
如果以ww格式為主 第 周的起迄如下
:asdb:WFselect to_date( yyyymmdd ) + * to_date( yyyymmdd ) + * from dual;
TO_DATE( TO_DATE(
JAN JAN
:asdb:WFselect to_date( yyyymmdd ) + * to_date( yyyymmdd ) + * from dual;
TO_DATE( TO_DATE(
APR APR
Elapsed: : :
驗證如下
:asdb:WFselect to_char(to_date( yyyymmdd ) ww ) as weekn to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as weekn from dual;
WEEK WEEK WEEK WEEK
??
Elapsed: : :
:asdb:WF
iw的算法為星期一至星期日算一周 且每年的第一個星期一為第一周
例如 為星期六 所以用iw的算法是前年的 周 而 之后才是第一周的開始
公式 每周第一天? next_day(date) + 周 *
每周最后一天 next_day(date) + 周 *
如果以iw格式為主 第 周的起迄如下
:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )+ * as first_day next_day(to_date( yyyymmdd ) MONDAY )+ * as last_day from dual;
FIRST_DAY LAST_DAY
JAN JAN
Elapsed: : :
:asdb:WF
:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )+ * as first_day next_day(to_date( yyyymmdd ) MONDAY )+ * as last_day from dual;
FIRST_DAY LAST_DAY
APR MAY
Elapsed: : :
:asdb:WF
驗證如下
:asdb:WFselect to_char(to_date( yyyymmdd ) iw ) as weekn to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as weekn from dual;
WEEK WEEK WEEK WEEK
??
Elapsed: : :
其它
== 查今天是 本月 的第幾周
SELECT TO_CHAR(SYSDATE WW ) TO_CHAR(TRUNC(SYSDATE MM ) WW ) + AS weekOfMon from dual;
或
SELECT TO_CHAR(SYSDATE W ) AS weekOfMon from dual;
== 查今天是 今年 的第幾周
select to_char(sysdate ww ) from dual;
或
select to_char(sysdate iw ) from dual;
附注
上文所提之iw及ww格式在doc內解釋如下
IW = Week of year ( or ) based on the ISO standard
WW = Week of year ( ) where week starts on the first day of the year and continues to the seventh day of the year
參考文件
Format Models
oracle周數(shù)計算(續(xù))
===========================================================
作者: keyneslin()
發(fā)表于: :
分類: ORACLE
出處:
本篇是接續(xù)前一篇 因有朋友(allenc)要計算oracle的周數(shù)日期起迄
所以測試了一下
測試結果如下
特殊周數(shù)計算
星期日到星期六為一周(與ww及iw算法不同)
例 年的第一周起迄是同一天 是
例 年的第一周起為 迄為
計算第一周的天數(shù)
create or replace function fdf(p_date in date) return number
is
begin
檢查是否傳入要計算那一年的一月一日
if to_char(to_char(p_date ddd )) then
return null;
end if;
如果第一周的第一天剛好也是最后一天時 傳回
if to_char(p_date d ) then
return (next_day(p_date SATURDAY ) p_date + );
else
return ;
end if;
exception
when others then
dbms_output put_line(sqlerrm);
end;
計算公式
起??????????? decode(周 計算當年的一月一日 計算當年的一月一日 + (fdf(計算當年的一月一日) + (周 )* )) as 起
迄(第一種算法) decode(周 to_date(to_char(計算當年的一月一日 yyyy )|| || yyyymmdd ) 計算當年的一月一日 + (fdf(計算當年的一月一日) + (周 )* )) as 迄
迄(第二種算法) decode(周 last_day(trunc(計算當年的一月一日 mm )+ ) 計算當年的一月一日 + (fdf(計算當年的一月一日) + (周 )* )) as 迄
上面的參數(shù)部份 計算當年的一月一日 為date type 周 為number type
傳回值一律是date型態(tài)
例如
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
年第 周方法
select decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( last_day(trunc(to_date( yyyymmdd ) mm )+ ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
結果如下
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
S_WEEK??? E_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
S_WEEK??? E_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
S_WEEK??? E_WEEK
DEC DEC
Elapsed: : :
:asdb:WF
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
S_WEEK??? E_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
S_WEEK??? E_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd ) + (fdf(to_date( yyyymmdd )) + ( )* )) as e_week from dual;
S_WEEK??? E_WEEK
DEC DEC
Elapsed: : :
lishixinzhi/Article/program/Oracle/201311/18269
oracle中的乘法用*表示。
工具:oracle 10g,plsql
步驟:
1、打開plsql,登錄到指定數(shù)據(jù)。
2、創(chuàng)建一個查詢,輸入要計算的乘法公式,如計算5×7
select?5*7?from?dual;
3、對于小數(shù)也是同樣計算方法,但是可采用四舍五入的方式保留小數(shù),如0.23×0.5按四舍五入保留2位小數(shù)。
select?round(0.23*0.5,2)?from?dual;
在oracle中,sum一般用于統(tǒng)計某列的和,count用于統(tǒng)計行數(shù)。工具:oracle 10g 步驟: 1、oracle中emp表有如下數(shù)據(jù): 2、要求按deptno字段統(tǒng)計每個deptno下有多少行數(shù)據(jù),可用如下語句: select deptno,count(*) from emp group by deptno; 3、查詢結果: 4、要求按deptno字段統(tǒng)計每個deptno下的sal的和是多少,可用如下語句: select deptno,sum(sal) from emp group by deptno; 5、查詢結果: 其中:sum、count等在oracle中叫聚合函數(shù),聚合函數(shù)對一組值執(zhí)行計算并返回單一的值。除了 count以外,聚合函數(shù)忽略空值。聚合函數(shù)經(jīng)常與 select語句的group by子句一同使用。