與一個朋友聊天,發現他最近做了一個很棒的報表,用他的話來講,起碼值5000RMB,我拿來與大家分享下,共同進步。
用朋友小張的話,就是他最近接到公司財務部長大人的需求,需要通過采購和研發部門的降本計劃,統計出各部門的降本信息,然后如果讓財務部的小妹手工統計的話,那簡直是太困難了,如是求助IT人員用報表軟件FineReport實現。(finereport的下載地址:http://www.finereport.com/)
朋友小張通過仔細分析得出降本計劃數據來源哪里,思索一番得出如下邏輯:
①核價單單頭表包含信息:核價日期、供應商、主導部門
②核價單單身表包含信息:品號、核價單價、原單價、生效日期、失效日期
③采購進貨單單頭信息:單別、單據號、供應商、單據日期
④采購進貨單單身信息:品號、名稱、規格、進貨單價、稅率
于是乎,朋友小張想到辦法難點是如何取到原單價,最終報表如下:
原單價取價邏輯為當進貨單單據日期在核價單生效日期和失效日期之間時抓取對應的核價單原單價信息。
下面是獲取原單價函數:
ALTER Function [dbo].[UF_GetLastPRice](@TL004 AS nvarchar(10),@date as nvarchar(8),@item as nvarchar(30))returns decimal(18,6)asbegin--set @TL004='09001'--set @date='20150116'--set @item='10102069620001';declare @price as decimal(18,6);declare @zdbm as nvarchar(20);with b as(select TM004,TM014,TM018,TL004,PURTL.UDF01 from PURTL inner join PURTM ON TL001=TM001 AND TL002=TM002where TM011='Y' AND TL004=@TL004 and TM014<=@date and TM004=@item)select @price=isnull(t.TM018,0),@zdbm=t.UDF01 from (select b.UDF01,b.TM004,b.TM018,ROW_NUMBER() over(partition by b.TM004 order by b.TM014 desc )rnfrom b ) twhere rn=1return @priceend
這樣的話就可以獲取到原單價了,可以通過FineReport實現想要的信息。
新聞熱點
疑難解答