婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 用計算列實(shí)現(xiàn)移動加權(quán)平均算法

用計算列實(shí)現(xiàn)移動加權(quán)平均算法

熱門標(biāo)簽:漯河電銷回?fù)芡夂粝到y(tǒng) 西安電話自動外呼系統(tǒng) 怎么修改高德地圖標(biāo)注 長沙外呼系統(tǒng)平臺 城市地圖標(biāo)志怎么標(biāo)注 美國地圖標(biāo)注軟件下載 合肥crm外呼系統(tǒng)加盟 電話機(jī)器人怎么看余額 硅基電話機(jī)器人官網(wǎng)
復(fù)制代碼 代碼如下:

if OBJECT_ID('tb') is not null drop table tb
if OBJECT_ID('TEMP') is not null drop table TEMP
if OBJECT_ID('FUN_NOWPRICE') is not null drop FUNCTION FUN_NOWPRICE
if OBJECT_ID('FUN_NOWQTY') is not null drop FUNCTION FUN_NOWQTY
go

create table tb(
id INT
,Date1 datetime
,ctype varchar(10)
,qnt float
,pri float
)

--qnt 數(shù)量
--pri 單價
insert tb
select 0,'2009-1-1', '進(jìn)貨', 10, 100 union all
select 1,'2009-1-1', '進(jìn)貨', 50, 120 union all
select 2,'2009-1-2', '出貨', 30, 150 union all
select 3,'2009-1-3', '進(jìn)貨', 40, 130 union all
select 4,'2009-1-3', '出貨', 25, 160
GO
-- 我要算成本價,按移動加權(quán)平均

/*
1進(jìn)貨以后的成本價c1=(10*100+50*120)/(10+50)
2出貨以后的成本價c2=((10+50)*c1-30*c1)/((10+50)-30)=C2
--也就是說出貨的時候價格不變
3進(jìn)貨以后的成本價c3=(((10+50)-30)*c2+40*130)/((10+50)-30+40)
--也就是說進(jìn)貨的時候單價更新為(當(dāng)前庫存的總價值+庫總價值)/入庫后總數(shù)量


以此類推...
*/

--想了半天,覺得只能用循環(huán)、遞歸、游標(biāo)實(shí)現(xiàn),因?yàn)槌鰩鞎r的價格是根據(jù)之前的記錄算出來的。
--也許有經(jīng)典的算法,誰知道的麻煩教教我或者發(fā)個鏈接。

--這個FUNCTION就是變相實(shí)現(xiàn)遞歸的
CREATE FUNCTION FUN_NOWPRICE(@ID INT)
RETURNS NUMERIC(19,6)
AS
BEGIN
RETURN (SELECT ISNULL(NOWPRICE,0) FROM
(SELECT MAX(NOWPRICE) 'NOWPRICE' FROM TEMP T1 WHERE ID@ID AND
NOT EXISTS(SELECT 1 FROM TEMP WHERE ID>T1.ID AND ID@ID))
T)
END
GO
--這個FUNCTION是為了計算方便
CREATE FUNCTION FUN_NOWQTY(@ID INT)
RETURNS NUMERIC(19,6)
AS
BEGIN
RETURN (SELECT ISNULL(SUM(CASE CTYPE WHEN '進(jìn)貨' THEN QNT ELSE 0-QNT END),0) FROM TEMP WHERE ID@ID)
END
GO


--建一個臨時表,包含原表參與運(yùn)算的全部字段
create table TEMP(
id INT
,Date1 datetime
,ctype varchar(10)
,qnt float
,pri float
,NOWPRICE AS
CASE ctype
WHEN '出貨' THEN DBO.FUN_NOWPRICE(ID)
ELSE (DBO.FUN_NOWPRICE(ID)*DBO.FUN_NOWQTY(ID)+QNT*PRI)/(DBO.FUN_NOWQTY(ID)+QNT)
END)


INSERT INTO TEMP
SELECT * FROM TB
ORDER BY DATE1 ASC,ID ASC

SELECT * FROM TEMP

/*
0 2009-01-01 00:00:00.000 進(jìn)貨 10 100 100
1 2009-01-01 00:00:00.000 進(jìn)貨 50 120 116.666666666667
2 2009-01-02 00:00:00.000 出貨 30 150 116.666667
3 2009-01-03 00:00:00.000 進(jìn)貨 40 130 124.285714428571
4 2009-01-03 00:00:00.000 出貨 25 160 124.285714
*/

這個寫法的不完善處在于它是根據(jù)ID和日期對記錄進(jìn)行排序的,對于同一天的出入庫情況沒有處理。實(shí)際運(yùn)用中可以根據(jù)CREATEDATE等時間標(biāo)志性字段來進(jìn)行排序。
--------------------------------------------------------------------------------

第一次寫技術(shù)性博客,希望這是一個好的開始,歡迎大家對我的算法進(jìn)行指正^_^

標(biāo)簽:商洛 瀘州 文山 濟(jì)源 廣西 吉林 撫順 玉溪

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用計算列實(shí)現(xiàn)移動加權(quán)平均算法》,本文關(guān)鍵詞  用,計算,列,實(shí)現(xiàn),移動,加權(quán),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用計算列實(shí)現(xiàn)移動加權(quán)平均算法》相關(guān)的同類信息!
  • 本頁收集關(guān)于用計算列實(shí)現(xiàn)移動加權(quán)平均算法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 怀仁县| 清涧县| 依安县| 和静县| 田阳县| 襄城县| 逊克县| 镇坪县| 高陵县| 大悟县| 扬中市| 理塘县| 海林市| 罗山县| 荃湾区| 耿马| 香格里拉县| 乌什县| 南康市| 越西县| 平果县| 清远市| 南岸区| 古田县| 衢州市| 四子王旗| 左贡县| 岳普湖县| 临安市| 横峰县| 太康县| 岫岩| 大悟县| 延寿县| 宿迁市| 安塞县| 岚皋县| 彭水| 柘城县| 松滋市| 文登市|