单价取最近的结账账期加权平均单价;数量根据传入参数确定。

传入参数:

年份:如2017

账期:如11

SQL直接使用时执行存储过程:

execute [huwei_sp_stock_Age] 2017,07

K3调用查询分析语句:

  1. set nocount ON

  2. exec gd_sp_stock_Age @ParaYear@ ,@parePeriod@

存储过程代码如下:

  1. Set NoCount On

  2. SET ANSI_WARNINGS OFF

  3. USE [AIS20140104204141]

  4. GO

  5. /****** Object: StoredProcedure [dbo].[huwei_sp_stock_Age] Script Date: 12/15/2017 08:29:37 ******/

  6. ALTER procedure [dbo].[gd_sp_stock_Age]

  7. @paraYear@ int,

  8. @parePeriod@ int

  9. as

  10. declare @year int

  11. declare @period int

  12. declare @Fdate datetime

  13. declare @Fstartdate datetime

  14. --declare @paraYear@ int

  15. --declare @parePeriod@ int

  16. --set @paraYear@=(select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentYear')

  17. --set @parePeriod@=(select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentPeriod')

  18. if @parePeriod@=12

  19. begin

  20. set @year=@paraYear@+1

  21. set @period=1

  22. set @Fdate=convert(datetime,convert(nvarchar(20),@year)+'-01-01')-1

  23. set @Fstartdate=convert(datetime,convert(nvarchar(20),@paraYear@)+'-12-01')

  24. end

  25. else

  26. begin

  27. set @year=@paraYear@

  28. set @period=@parePeriod@+1

  29. set @Fdate=convert(datetime,convert(nvarchar(20),@year)+'-'+convert(nvarchar(20),@period)+'-01')-1

  30. set @Fstartdate=convert(datetime,convert(nvarchar(20),@Year)+'-'+convert(nvarchar(20),@parePeriod@)+'-01')

  31. end

  32. Create Table #Happen2(

  33. FItemID int Null,

  34. FStockID int Null,

  35. FBatchNo NVARCHAR(200),

  36. FQty decimal(28,10) Null,

  37. FCUUnitQty decimal(28,10) Null,

  38. FQty1 Decimal(28,10),

  39. FCUUnitQty1 Decimal(28,10),

  40. FAmount1 Decimal(28,10),

  41. FQty2 Decimal(28,10),

  42. FCUUnitQty2 Decimal(28,10),

  43. FAmount2 Decimal(28,10),

  44. FQty3 Decimal(28,10),

  45. FCUUnitQty3 Decimal(28,10),

  46. FAmount3 Decimal(28,10),

  47. FQty4 Decimal(28,10),

  48. FCUUnitQty4 Decimal(28,10),

  49. FAmount4 Decimal(28,10),

  50. FQty5 Decimal(28,10),

  51. FCUUnitQty5 Decimal(28,10),

  52. FAmount5 Decimal(28,10),

  53. FQty6 Decimal(28,10),

  54. FCUUnitQty6 Decimal(28,10),

  55. FAmount6 Decimal(28,10),

  56. FTemp bit ,FPrice Decimal(28,10),FCUPrice Decimal(28,10),FAmount Decimal(28,10))

  57. Create Table #Happen(

  58. FItemID int Null,

  59. FStockID int Null,

  60. FBatchNo NVARCHAR(200),

  61. FQty decimal(28,10) Null,

  62. FCUUnitQty decimal(28,10) Null,

  63. FQty1 Decimal(28,10),

  64. FCUUnitQty1 Decimal(28,10),

  65. FAmount1 Decimal(28,10),

  66. FQty2 Decimal(28,10),

  67. FCUUnitQty2 Decimal(28,10),

  68. FAmount2 Decimal(28,10),

  69. FQty3 Decimal(28,10),

  70. FCUUnitQty3 Decimal(28,10),

  71. FAmount3 Decimal(28,10),

  72. FQty4 Decimal(28,10),

  73. FCUUnitQty4 Decimal(28,10),

  74. FAmount4 Decimal(28,10),

  75. FQty5 Decimal(28,10),

  76. FCUUnitQty5 Decimal(28,10),

  77. FAmount5 Decimal(28,10),

  78. FQty6 Decimal(28,10),

  79. FCUUnitQty6 Decimal(28,10),

  80. FAmount6 Decimal(28,10),

  81. FTemp bit ,FPrice Decimal(28,10),FCUPrice Decimal(28,10),FAmount Decimal(28,10))

  82. Create Table #Happen1(

  83. FItemID int Null,

  84. FStockID int Null,

  85. FBatchNo NVARCHAR(200),

  86. FQty decimal(28,10) Null,

  87. FCUUnitQty decimal(28,10) Null,

  88. FQty1 Decimal(28,10),

  89. FCUUnitQty1 Decimal(28,10),

  90. FQty2 Decimal(28,10),

  91. FCUUnitQty2 Decimal(28,10),

  92. FQty3 Decimal(28,10),

  93. FCUUnitQty3 Decimal(28,10),

  94. FQty4 Decimal(28,10),

  95. FCUUnitQty4 Decimal(28,10),

  96. FQty5 Decimal(28,10),

  97. FCUUnitQty5 Decimal(28,10),

  98. FQty6 Decimal(28,10),

  99. FCUUnitQty6 Decimal(28,10),

  100. FTemp bit ,FPrice Decimal(28,10),FCUPrice Decimal(28,10),FAmount Decimal(28,10) )

  101. Insert Into #Happen1

  102. Select t1.FItemID,t2.FItemID As FStockID,t6.FBatchNo,0,0,

  103. (Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,@Fdate),101)) Then t5.FRob*t6.FQty Else 0 End) As FQty1,

  104. ((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,@Fdate),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient As FCUUnitQty1,

  105. (Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,@Fdate),101)) Then t5.FRob*t6.FQty Else 0 End) As FQty2,

  106. ((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,@Fdate),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient As FCUUnitQty2,

  107. (Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,@Fdate),101)) Then t5.FRob*t6.FQty Else 0 End) As FQty3,

  108. ((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,@Fdate),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient As FCUUnitQty3,

  109. (Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,@Fdate),101)) Then t5.FRob*t6.FQty Else 0 End) As FQty4,

  110. ((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,@Fdate),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient As FCUUnitQty4,

  111. (Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,@Fdate),101)) Then t5.FRob*t6.FQty Else 0 End) As FQty5,

  112. ((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,@Fdate),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient As FCUUnitQty5,

  113. (Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) Then t5.FRob*t6.FQty Else 0 End) As FQty6,

  114. ((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient As FCUUnitQty6,

  115. 1 ,ISNULL(((SELECT t12.FBegBal/t12.FBegQty FROM t_ICItem t11

  116. INNER JOIN (SELECT FItemID,SUM(FBegBal) AS FBegBal,SUM(FBegQty) AS FBegQty FROM ICBal t13

  117. Where t13.FItemID = t6.FItemID And t13.FYear = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentYear') And t13.FPeriod = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentPeriod')

  118. GROUP BY t13.FItemID) t12 ON t11.FItemID=t12.FItemID AND t12.FBegBal>0 AND t12.FBegQty>0) ),0),0,0

  119. From t_ICItem t1

  120. Join ICStockBill t5 On (t5.FStatus > 0 Or (t5.FUpStockWhenSave > 0 And t5.FCancellation <1 ))

  121. Join ICStockBillEntry t6 On t5.FInterID=t6.FInterID

  122. Left Join t_MeasureUnit t7 On t1.FStoreUnitID=t7.FMeasureUnitID

  123. Left Join t_Stock t2 On t2.FItemID = (case when t5.ftrantype=24 then t6.FSCStockID else t6.FDCStockID end)

  124. Where t1.FItemID = t6.FItemID

  125. And ((t5.FTrantype In (1,2,5,10,40) And t5.FRob =1) Or (t5.FTrantype In(21,24,28,29) And t5.FRob=-1))

  126. AND (NOT (t5.FTrantype In (1) AND t5.FPOMode = 36681 ))

  127. AND (NOT (t5.FTranType=1 and t6.FSourceInterID > 0 and EXISTS(SELECT 1 FROM ICHookRelations t8 where t6.FinterID=t8.fIBInterID and t8.FIBTag=4 )))

  128. And t2.FTypeID NOT IN (504)

  129. Insert Into #Happen1

  130. Select t1.FItemID,t2.FItemID As FStockID,t6.FBatchNo,0,0,

  131. (Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,@Fdate),101)) Then t6.FBegQty Else 0 End) As FQty1,

  132. ((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,@Fdate),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient As FCUUnitQty1,

  133. (Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,@Fdate),101)) Then t6.FBegQty Else 0 End) As FQty2,

  134. ((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,@Fdate),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient As FCUUnitQty2,

  135. (Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,@Fdate),101)) Then t6.FBegQty Else 0 End) As FQty3,

  136. ((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,@Fdate),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient As FCUUnitQty3,

  137. (Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,@Fdate),101)) Then t6.FBegQty Else 0 End) As FQty4,

  138. ((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,@Fdate),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient As FCUUnitQty4,

  139. (Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,@Fdate),101)) Then t6.FBegQty Else 0 End) As FQty5,

  140. ((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,@Fdate),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient As FCUUnitQty5,

  141. (Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) Then t6.FBegQty Else 0 End) As FQty6,

  142. ((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,@Fdate),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient As FCUUnitQty6,

  143. 1 ,ISNULL(((SELECT t12.FBegBal/t12.FBegQty FROM t_ICItem t11

  144. INNER JOIN (SELECT FItemID,SUM(FBegBal) AS FBegBal,SUM(FBegQty) AS FBegQty FROM ICBal t13

  145. Where t13.FItemID = t6.FItemID And t13.FYear = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentYear') And t13.FPeriod = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentPeriod')

  146. GROUP BY t13.FItemID) t12 ON t11.FItemID=t12.FItemID AND t12.FBegBal>0 AND t12.FBegQty>0) ),0),0,0

  147. From t_ICItem t1

  148. Join ICInvInitial t6 On t1.FItemID = t6.FItemID

  149. Left Join t_MeasureUnit t7 On t1.FStoreUnitID=t7.FMeasureUnitID

  150. Left Join t_Stock t2 On t2.FItemID = t6.FStockID

  151. Where 1=1 And t2.FTypeID NOT IN (504)

  152. CREATE TABLE #InventoryHanppen

  153. (FItemID INT NOT NULL,

  154. FStockID INT NULL,

  155. FBatchNo Varchar(255) NULL,

  156. FQty DECIMAL(28,10) NOT NULL,

  157. FAmount DECIMAL(28,10) NOT NULL )

  158. INSERT INTO #InventoryHanppen(FItemID,FStockID,FBatchNo,FQty,FAmount)

  159. SELECT u1.FItemID,u1.FStockID,u1.FBatchNo,u1.FBegQty,u1.FBegBal

  160. FROM t_ICItem t1

  161. INNER JOIN ICInvBal u1 ON t1.FItemID=u1.FItemID

  162. LEFT JOIN t_Stock t2 ON t2.FItemID = u1.FStockID

  163. WHERE u1.FYear=@paraYear@ AND

  164. u1.FPeriod=@parePeriod@ And t2.FTypeID NOT IN (504)

  165. INSERT INTO #InventoryHanppen(FItemID,FStockID,FBatchNo,FQty,FAmount)

  166. SELECT u1.FItemID,t2.FItemID,u1.FBatchNo, CASE WHEN v1.FTranType IN (1,2,5,10,40,41,101,102) OR (v1.FTranType=100 AND v1.FBillTypeID=12542) THEN u1.FQty ELSE -1 * u1.FQty END,

  167. CASE WHEN v1.FTranType IN (1,2,5,10,40,101,102) OR (v1.FTranType=100 AND v1.FBillTypeID=12542) THEN u1.FAmount WHEN v1.FTranType=41 THEN u1.FAmtRef ELSE -1 * u1.FAmount END

  168. FROM t_ICItem t1

  169. INNER JOIN ICStockBillEntry u1 ON t1.FItemID=u1.FItemID

  170. INNER JOIN ICStockBill v1 ON u1.FInterID=v1.FInterID

  171. LEFT JOIN t_Stock t2 ON ((v1.FTrantype=24 AND u1.FSCStockID=t2.FItemID) OR (v1.FTranType IN (1,2,5,10,21,41,28,29,43,40,100,101,102) AND u1.FDCStockID=t2.FItemID ))

  172. WHERE v1.FDate>=@Fstartdate AND

  173. v1.FDate<=@Fdate And t2.FTypeID NOT IN (504)

  174. AND v1.Ftrantype In (1,2,5,10,21,24,41,28,29,43,40,100,101,102) AND (NOT (v1.FTrantype In (1) AND isnull(v1.FPOMode,0) = 36681 ))

  175. AND (v1.FStatus > 0 Or (v1.FUpStockWhenSave > 0 And v1.FCancellation <1 ))

  176. INSERT INTO #InventoryHanppen(FItemID,FStockID,FBatchNo,FQty,FAmount)

  177. SELECT u1.FItemID,t2.FItemID,u1.FBatchNo,-1 * u1.FQty ,-1 * u1.FAmount

  178. FROM t_ICItem t1

  179. INNER JOIN ICStockBillEntry u1 ON t1.FItemID=u1.FItemID

  180. INNER JOIN ICStockBill v1 ON u1.FInterID=v1.FInterID

  181. LEFT JOIN t_Stock t2 ON u1.FSCStockID=t2.FItemID

  182. WHERE v1.FDate>=@Fstartdate AND

  183. v1.FDate<=@Fdate And t2.FTypeID NOT IN (504)

  184. AND v1.Ftrantype=41

  185. AND (v1.FStatus > 0 Or (v1.FUpStockWhenSave > 0 And v1.FCancellation <1 ))

  186. SELECT FItemID,FStockID,FBatchNo,SUM(FQty) AS FQty,SUM(FAmount) AS FAmount INTO #INVENTORY

  187. FROM #InventoryHanppen

  188. GROUP BY FItemID,FStockID,FBatchNo

  189. DROP TABLE #InventoryHanppen

  190. DELETE FROM #INVENTORY WHERE FQty<=0

  191. Insert Into #Happen1

  192. Select t1.FItemID,t2.FItemID As FStockID,t3.FBatchNo,(t3.FQTY) As FQTY,CAST(t3.FQTY AS DECIMAL(28,10))/t7.FCoefficient As FCUUnitQty,0,0,0,0,0,0,0,0,0,0,0,0,1 ,ISNULL(((SELECT t12.FBegBal/t12.FBegQty FROM t_ICItem t11

  193. INNER JOIN (SELECT FItemID,SUM(FBegBal) AS FBegBal,SUM(FBegQty) AS FBegQty FROM ICBal t13

  194. Where t13.FItemID = t3.FItemID And t13.FYear = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentYear') And t13.FPeriod = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentPeriod')

  195. GROUP BY t13.FItemID) t12 ON t11.FItemID=t12.FItemID AND t12.FBegBal>0 AND t12.FBegQty>0) ),0),0,0

  196. From t_ICItem t1

  197. Join #INVENTORY t3 On t1.FItemID = t3.FItemID

  198. Left Join t_MeasureUnit t7 On t1.FStoreUnitID=t7.FMeasureUnitID

  199. Left Join t_Stock t2 On t2.FItemID = t3.FStockID

  200. Where 1=1

  201. And t2.FTypeID NOT IN (504)

  202. Insert Into #HAPPEN2

  203. Select t1.FITEMID,0,t1.FBatchNo,Sum(FQTY)As FQTY,Sum(FCUUnitQTY)As FCUUnitQTY,

  204. Sum(fqty1) As FQty1 ,Sum(fCUUnitqty1) As FCUUnitQty1 ,0,Sum(fqty2) As FQty2 ,Sum(fCUUnitqty2) As FCUUnitQty2 ,0,Sum(fqty3) As FQty3 ,Sum(fCUUnitqty3) As FCUUnitQty3 ,0,Sum(fqty4) As FQty4 ,Sum(fCUUnitqty4) As FCUUnitQty4 ,0,Sum(fqty5) As FQty5 ,Sum(fCUUnitqty5) As FCUUnitQty5 ,0,Sum(fqty6) As FQty6 ,Sum(fCUUnitqty6) As FCUUnitQty6 ,0,1,Min(FPrice),case Sum(FCUUnitQTY) when 0 then 0 else (Min(FPrice)*Sum(FQTY))/Sum(FCUUnitQTY) end,Min(FPrice)*Sum(FQTY)

  205. From #HAPPEN1 t1 INNER JOIN t_ICItem t2 ON t1.FItemID=t2.FItemID

  206. GROUP By t1.FITEMID,t1.FBatchNo Update #Happen2 Set FQty1= FQty,FQty2=0

  207. ,FQty3=0

  208. ,FQty4=0

  209. ,FQty5=0

  210. ,FQty6=0

  211. Where FQty-FQty1<0

  212. Update #Happen2 Set FQty2= FQty-FQty1,FQty3=0

  213. ,FQty4=0

  214. ,FQty5=0

  215. ,FQty6=0

  216. Where FQty-FQty1-FQty2<0

  217. Update #Happen2 Set FQty3= FQty-FQty1-FQty2,FQty4=0

  218. ,FQty5=0

  219. ,FQty6=0

  220. Where FQty-FQty1-FQty2-FQty3<0

  221. Update #Happen2 Set FQty4= FQty-FQty1-FQty2-FQty3,FQty5=0

  222. ,FQty6=0

  223. Where FQty-FQty1-FQty2-FQty3-FQty4<0

  224. Update #Happen2 Set FQty5= FQty-FQty1-FQty2-FQty3-FQty4,FQty6=0

  225. Where FQty-FQty1-FQty2-FQty3-FQty4-FQty5<0

  226. Update #Happen2 Set FQty6= FQty-FQty1-FQty2-FQty3-FQty4-FQty5

  227. Update #Happen2 Set FAmount1=FPrice*FQty1

  228. Update #Happen2 Set FAmount2=FPrice*FQty2

  229. Update #Happen2 Set FAmount3=FPrice*FQty3

  230. Update #Happen2 Set FAmount4=FPrice*FQty4

  231. Update #Happen2 Set FAmount5=FPrice*FQty5

  232. Update #Happen2 Set FAmount6=FPrice*FQty6

  233. Update #Happen2 Set FCUUnitQty1= FCUUnitQty,FCUUnitQty2=0

  234. ,FCUUnitQty3=0

  235. ,FCUUnitQty4=0

  236. ,FCUUnitQty5=0

  237. ,FCUUnitQty6=0

  238. Where FCUUnitQty-FCUUnitQty1<0

  239. Update #Happen2 Set FCUUnitQty2= FCUUnitQty-FCUUnitQty1

  240. ,FCUUnitQty3=0

  241. ,FCUUnitQty4=0

  242. ,FCUUnitQty5=0

  243. ,FCUUnitQty6=0

  244. Where FCUUnitQty-FCUUnitQty1-FCUUnitQty2<0

  245. Update #Happen2 Set FCUUnitQty3= FCUUnitQty-FCUUnitQty1

  246. -FCUUnitQty2

  247. ,FCUUnitQty4=0

  248. ,FCUUnitQty5=0

  249. ,FCUUnitQty6=0

  250. Where FCUUnitQty-FCUUnitQty1-FCUUnitQty2-FCUUnitQty3<0

  251. Update #Happen2 Set FCUUnitQty4= FCUUnitQty-FCUUnitQty1

  252. -FCUUnitQty2

  253. -FCUUnitQty3

  254. ,FCUUnitQty5=0

  255. ,FCUUnitQty6=0

  256. Where FCUUnitQty-FCUUnitQty1-FCUUnitQty2-FCUUnitQty3-FCUUnitQty4<0

  257. Update #Happen2 Set FCUUnitQty5= FCUUnitQty-FCUUnitQty1

  258. -FCUUnitQty2

  259. -FCUUnitQty3

  260. -FCUUnitQty4

  261. ,FCUUnitQty6=0

  262. Where FCUUnitQty-FCUUnitQty1-FCUUnitQty2-FCUUnitQty3-FCUUnitQty4-FCUUnitQty5<0

  263. Update #Happen2 Set FCUUnitQty6= FCUUnitQty-FCUUnitQty1

  264. -FCUUnitQty2

  265. -FCUUnitQty3

  266. -FCUUnitQty4

  267. -FCUUnitQty5

  268. Insert Into #HAPPEN

  269. Select t1.FITEMID,0,t1.FBatchNo,Sum(FQTY)As FQTY,Sum(FCUUnitQTY)As FCUUnitQTY,

  270. Sum(fqty1) As FQty1 ,Sum(fCUUnitqty1) As FCUUnitQty1 ,Sum(FAmount1) As FAmount1,Sum(fqty2) As FQty2 ,Sum(fCUUnitqty2) As FCUUnitQty2 ,Sum(FAmount2) As FAmount2,Sum(fqty3) As FQty3 ,Sum(fCUUnitqty3) As FCUUnitQty3 ,Sum(FAmount3) As FAmount3,Sum(fqty4) As FQty4 ,Sum(fCUUnitqty4) As FCUUnitQty4 ,Sum(FAmount4) As FAmount4,Sum(fqty5) As FQty5 ,Sum(fCUUnitqty5) As FCUUnitQty5 ,Sum(FAmount5) As FAmount5,Sum(fqty6) As FQty6 ,Sum(fCUUnitqty6) As FCUUnitQty6 ,Sum(FAmount6) As FAmount6,1,Min(FPrice),case Sum(FCUUnitQTY) when 0 then 0 else (Min(FPrice)*Sum(FQTY))/Sum(FCUUnitQTY) end,Min(FPrice)*Sum(FQTY)

  271. From #HAPPEN2 t1 INNER JOIN t_ICItem t2 ON t1.FItemID=t2.FItemID

  272. GROUP By t1.FITEMID,t1.FBatchNo

  273. HAVING (SUM(FQTY)>=0)

  274. CREATE TABLE #DATA(

  275. FNumber Varchar(355) null,

  276. FShortNumber Varchar(355) null,

  277. FName Varchar(355) null,

  278. FModel Varchar(355) null,

  279. FUnitName Varchar(355) null,

  280. FCUUnitName Varchar(355) null,

  281. FQtyDecimal smallint null,

  282. FPriceDecimal smallint null,

  283. FQty Decimal(28,10) Null,

  284. FCUUnitQty Decimal(28,10) Null,

  285. FPrice Decimal(28,10) NULL,

  286. FCUPrice Decimal(28,10) Null,

  287. FAmount Decimal(28,10) Null,

  288. FQty1 Decimal(28,10),

  289. FCUUnitQty1 Decimal(28,10),

  290. FAmount1 Decimal(28,10),

  291. FQty2 Decimal(28,10),

  292. FCUUnitQty2 Decimal(28,10),

  293. FAmount2 Decimal(28,10),

  294. FQty3 Decimal(28,10),

  295. FCUUnitQty3 Decimal(28,10),

  296. FAmount3 Decimal(28,10),

  297. FQty4 Decimal(28,10),

  298. FCUUnitQty4 Decimal(28,10),

  299. FAmount4 Decimal(28,10),

  300. FQty5 Decimal(28,10),

  301. FCUUnitQty5 Decimal(28,10),

  302. FAmount5 Decimal(28,10),

  303. FQty6 Decimal(28,10),

  304. FCUUnitQty6 Decimal(28,10),

  305. FAmount6 Decimal(28,10),

  306. FSumSort smallint not null Default(0),

  307. Flevel0 Decimal(10,3),

  308. Flevel1 Decimal(10,3),

  309. Flevel2 Decimal(10,3),

  310. Flevel3 Decimal(10,3),

  311. Flevel4 Decimal(10,3),

  312. Flevel5 Decimal(10,3),

  313. Flevel6 Decimal(10,3),

  314. FID int IDENTITY)

  315. INSERT INTO #DATA (

  316. FNumber,FShortNumber,FName,FModel,FUnitName,FCUUnitName,

  317. FQtyDecimal,FPriceDecimal,FQty,FCUUnitQty,FPrice,FCUPrice,FAmount,FQty1,

  318. FCUUnitQty1,

  319. FAmount1,

  320. FQty2,

  321. FCUUnitQty2,

  322. FAmount2,

  323. FQty3,

  324. FCUUnitQty3,

  325. FAmount3,

  326. FQty4,

  327. FCUUnitQty4,

  328. FAmount4,

  329. FQty5,

  330. FCUUnitQty5,

  331. FAmount5,

  332. FQty6,

  333. FCUUnitQty6,

  334. FAmount6,

  335. FSumSort)

  336. SELECT CASE WHEN GROUPING(t1.FNumber)=1 THEN '合计'

  337. ELSE t1.FNumber END,

  338. '','','','','',MAX(t1.FQtyDecimal),MAX(t1.FPriceDecimal),Sum(FQty),Sum(FCUUnitQty), case Sum(FQty) when 0 then 0 else Sum(FAmount)/Sum(FQty) end,(CASE Sum(FCUUnitQty) WHEN 0 THEN 0 ELSE Sum(FAmount)/Sum(FCUUnitQty) END), sum(FAmount), SUM(FQty1),

  339. SUM(FCUUnitQty1),

  340. SUM(FAmount1),

  341. SUM(FQty2),

  342. SUM(FCUUnitQty2),

  343. SUM(FAmount2),

  344. SUM(FQty3),

  345. SUM(FCUUnitQty3),

  346. SUM(FAmount3),

  347. SUM(FQty4),

  348. SUM(FCUUnitQty4),

  349. SUM(FAmount4),

  350. SUM(FQty5),

  351. SUM(FCUUnitQty5),

  352. SUM(FAmount5),

  353. SUM(FQty6),

  354. SUM(FCUUnitQty6),

  355. SUM(FAmount6),

  356. CASE WHEN GROUPING(t1.FNumber)=1 THEN 101

  357. ELSE 0 END FROM #Happen v2

  358. Inner Join t_ICItem t1 On v2.FItemID=t1.FItemID

  359. Left Join t_Stock t2 On v2.FStockID=t2.FItemID

  360. Where 1=1

  361. Group by t1.FNumber WITH ROLLUP Having Sum(FQty)>0

  362. Update t1 Set t1.FName=t2.FName,t1.FShortNumber=t2.FShortNumber,t1.FModel=t2.FModel, t1.FUnitName=t3.FName,t1.FCUUnitName=t4.FName ,t1.FQtyDecimal=t2.FQtyDecimal,t1.FPriceDecimal=t2.FPriceDecimal From #DATA t1,t_ICItem t2,t_MeasureUnit t3,t_MeasureUnit t4 Where t1.FNumber=t2.FNumber And t2.FUnitGroupID=t3.FUnitGroupID And t2.FStoreUnitID=t4.FMeasureUnitID And t3.FStandard=1

  363. --SELECT * FROM #DATA

  364. SELECT FNumber 物料编码,FName 物料名称,FUnitName 基本计量单位,FCUUnitName 库存单位,FQty 库存数量,FPrice 单价,FAmount 金额,

  365. Fqty1 '0-29天数量',fAmount1 '0-29天金额',Fqty2 '30-59天数量',fAmount2 '30-59天金额',Fqty3 '60-89天数量',fAmount3 '60-89天金额',Fqty4 '90-179天数量',fAmount4 '90-179天金额',Fqty5 '180-359天数量',fAmount5 '180-359天金额',Fqty6 '360天以上数量',fAmount6 '360天以上金额' FROM #DATA

  366. DROP TABLE #DATA

  367. Drop Table #Happen

  368. Drop Table #Happen1

  369. Drop Table #Happen2

  370. DROP TABLE #INVENTORY

  371. GO

效果图:

金蝶k3库存账龄分析报表(带参数)相关推荐

  1. Excel+MSSQL开发金蝶K3欠料报表

    将K3所有订单需求.MRP运算.库存及在途数据等数据整体展示,适合计划部门根据报表数据统筹考量物料供给情况,特制作此报表及Excel集成工具,以减少手工汇总统计的工作量. 本代码适用于金蝶K3 WIS ...

  2. 金蝶K3 库存收发汇总

    -- 先把代码传上来 再慢慢写思路和标记 DECLARE @DATESTAR   datetime  DECLARE @DATEEND    datetime  DECLARE @DATEBill   ...

  3. PT项目-SAP库存账龄分析报表

    功能概述 1.1. 业务背景 本程序是对物料按工厂.库存地点.物料号.销售订单号进行查询当前的库存及库龄的报表. 1.2. 功能描述 本程序能够查询出每个物料的数量.金额数据及库龄的明细数据. 1.2 ...

  4. 金蝶 K3 库存账龄分析表 数据不一致

    用户反馈某个物料在库存账龄分析表内的统计后存在超过1080天的数量,但实际该料只是在一年前导入,故不可能存在超过1080天的数据. 原因分析:用户没勾选包含调拨单的数据,报表统计时将调拨单排除在外.造 ...

  5. 金蝶K3直接SQL报表实现动态行转列报表

    我们知道,在BOS开发中,想实现动态行转列报表,可以使用交叉分析表来实现,但交叉分析表不太灵活,比如当动态列中有需要复杂的逻辑运算来实现时就无能为力了,下面介绍使用直接SQL报表来实现,也许能给你一点 ...

  6. 金蝶K3出入库单据制单日期误填到未来的日期,如何进行账务调整?

    接到一个比较棘手的情况,先描述下现状和遇到的问题: 1.仓库2019-04-11手工制作了一张产品入库单,单据日期误填到了2020-04-11,当时没发现,审核也通过了(审核更新库存): 2.这个入库 ...

  7. SQL Server R2 报表服务,BIDS中预览带参数的报表,整个BIDS突然关闭

    数据库版本:SQL Server R2 企业版 SP1 + CU 6 操作系统:Windows Server 2003 问题描述:在BIDS中开发报表,预览带有参数的报表时,点查看报表,整个BIDS全 ...

  8. 金蝶k3财务接口_记录用友T+接口对接的心酸历程

    前言:公司的业务主要是对接财务系统做单据传输或者凭证处理的,难免少不了和各大财务软件做数据对接,其中当然是必须通过接口来传递数据了.于是乎,用友T+的版本来了,对接的工作自然是我来做,可没想到就是这样 ...

  9. 金蝶K3供应链与总账对账的思路及方法

    本文档适用于 K/3V12.0及以上版本: 学习完本文档以后,能够对供应链与总账对账的思路和方法有个清晰的了解,并且 掌握对账不平的原因以及查找方法,解决对账不平的困扰. 背景 一到期末结账时就会接到 ...

最新文章

  1. zoj2760(最大流)
  2. pku2524-----Ubiquitous Religions(初次接触并查集)
  3. 翻遍全网!这4个Python项目最良心!(含视频源码)
  4. loadrunner脚本中参数有中文时报错
  5. 2017.9.7 翻硬币 失败总结
  6. Consider renaming one of the beans or enabling overriding by setting
  7. 《电路》邱关源 思维导图 第七章-一阶和二阶电路的时域分析
  8. 2021-04-27
  9. python3爬取斗鱼主播信息
  10. 手机进程设置多少个最好_手机打开,开发者选项中的这4个设置,性能瞬间提升一倍,不卡顿...
  11. 计算机主机光盘故障,光盘放进电脑里打开了显示函数不正确是什么问题?怎么处理?...
  12. Spring 面向切面编程(AOP) D5
  13. mysql查询重名_同名同姓搜索,同名身份证号码数据库
  14. Python OpenCV 计算机视觉:1~5
  15. 数据泄露的原因是什么?如何保护数据安全?
  16. 非线性规划问题求解(举例)
  17. PAT乙级刷题心得和常用函数总结 (c++实现)
  18. 软件工程 选课系统的uml类图_UML建模学生选课系统(类图+对象图+用例图+部署图)...
  19. Redis面试题(总结最全面的面试题)
  20. CSDN超级实习生计划——大厂实习直通车,年薪最高可达30W。2022正式开启~

热门文章

  1. iPad 在线音乐播放器
  2. 带有pm am时间格式转换
  3. 最新中国招标投标公共服务平台JS逆向分析
  4. 滑坡、沉降监测方案简析
  5. 中国网络安全相关政策法规(2020第一季度)
  6. 一个网安博士生的收藏夹
  7. 新手学习安装Windows字体
  8. 数据库到底是不是运维
  9. ace缓存扩展接口_Laravel框架中实现使用阿里云ACE缓存服务
  10. Mapbox使用之sprite(图标符号)