Sql server matl不是RKEY的“求和”——它看起来只是从WIPmatl列中提取第一项,该列已发布给任何给定RKEY。你能定义“某些错误”吗?请记住,我在这里工作是盲目的,因为我不知道你想做什么的细节。 SET ANSI_NULLS ON GO SET QUOTED
matl不是RKEY的“求和”——它看起来只是从WIPmatl列中提取第一项,该列已发布给任何给定RKEY。你能定义“某些错误”吗?请记住,我在这里工作是盲目的,因为我不知道你想做什么的细节。Sql server matl不是RKEY的“求和”——它看起来只是从WIPmatl列中提取第一项,该列已发布给任何给定RKEY。你能定义“某些错误”吗?请记住,我在这里工作是盲目的,因为我不知道你想做什么的细节。 SET ANSI_NULLS ON GO SET QUOTED,sql-server,Sql Server,matl不是RKEY的“求和”——它看起来只是从WIPmatl列中提取第一项,该列已发布给任何给定RKEY。你能定义“某些错误”吗?请记住,我在这里工作是盲目的,因为我不知道你想做什么的细节。 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[spWIPMatl] WITH RECOMPILE AS Declare @RKEY numeric(10,0) Declare @totMco
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spWIPMatl]
WITH RECOMPILE
AS
Declare @RKEY numeric(10,0)
Declare @totMcost numeric(13,5)
Declare @totsoldcost numeric (13,5)
Declare @approved int
Declare @nValue numeric(10,0)
Declare c1 CURSOR FOR
SELECT
DATA0006_1.RKEY,
SUM(DATA0095_1.QUANTITY * DATA0017_1.STD_COST) AS Material_cost,
SUM(0.35*DATA0095_1.QUANTITY ) AS Sold_cost
FROM
DATA0095 AS DATA0095_1
INNER JOIN
DATA0017 AS DATA0017_1 ON DATA0095_1.INVT_PTR = DATA0017_1.RKEY
INNER JOIN
DATA0067 AS DATA0067_1 ON DATA0095_1.SRCE_PTR = DATA0067_1.RKEY
RIGHT OUTER JOIN
DATA0006 AS DATA0006_1 ON DATA0067_1.WO_PTR = DATA0006_1.RKEY
WHERE
(DATA0017_1.P_M = 'P')
AND (LEFT(data0017_1.INV_PART_NUMBER, 3) = '25-'
OR LEFT(data0017_1.INV_PART_NUMBER, 3) = '85-')
AND (DATA0095_1.TRAN_TP = 13 or DATA0095_1.TRAN_TP = 14)
GROUP BY
DATA0006_1.WORK_ORDER_NUMBER, DATA0006_1.ROOT_PTR,
DATA0006_1.RKEY, DATA0006_1.QUAN_SCH, DATA0006_1.QUAN_REJ,
DATA0017_1.INV_PART_NUMBER
UNION ALL
SELECT DATA0006_1.RKEY, SUM(DATA0095_1.QUANTITY * DATA0017_1.STD_COST) AS Material_cost, SUM(0.8*DATA0095_1.QUANTITY) AS Sold_cost
FROM DATA0095 AS DATA0095_1 INNER JOIN
DATA0017 AS DATA0017_1 ON DATA0095_1.INVT_PTR = DATA0017_1.RKEY INNER JOIN
DATA0067 AS DATA0067_1 ON DATA0095_1.SRCE_PTR = DATA0067_1.RKEY RIGHT OUTER JOIN
DATA0006 AS DATA0006_1 ON DATA0067_1.WO_PTR = DATA0006_1.RKEY
/*WHERE (DATA0017_1.P_M = 'P') and (LEFT(data0017_1.INV_PART_NUMBER, 3) ='35-' ) and DATA0095_1.tran_tp=13 */
WHERE (DATA0017_1.P_M = 'P') and (LEFT(data0017_1.INV_PART_NUMBER, 3) ='35-' ) and (DATA0095_1.tran_tp=13 or DATA0095_1.TRAN_TP = 14)
GROUP BY DATA0006_1.WORK_ORDER_NUMBER, DATA0006_1.ROOT_PTR, DATA0006_1.RKEY, DATA0006_1.QUAN_SCH, DATA0006_1.QUAN_REJ , DATA0017_1.INV_PART_NUMBER
union all
SELECT DATA0006_1.RKEY, SUM(DATA0095_1.QUANTITY * DATA0017_1.STD_COST) AS Material_cost, SUM(0*DATA0095_1.QUANTITY) AS Sold_cost
FROM DATA0095 DATA0095_1 INNER JOIN
DATA0017 DATA0017_1 ON DATA0095_1.INVT_PTR = DATA0017_1.RKEY INNER JOIN
DATA0067 DATA0067_1 ON DATA0095_1.SRCE_PTR = DATA0067_1.RKEY RIGHT OUTER JOIN
DATA0006 DATA0006_1 ON DATA0067_1.WO_PTR = DATA0006_1.RKEY
/* WHERE data0017_1.P_M ='P' and (LEFT(data0017_1.INV_PART_NUMBER, 3) <> '35-' and LEFT(data0017_1.INV_PART_NUMBER, 3) <> '85-' and LEFT(data0017_1.INV_PART_NUMBER, 3) <> '25-' ) and DATA0095_1.tran_tp=13 */
WHERE data0017_1.P_M ='P' and (LEFT(data0017_1.INV_PART_NUMBER, 3) <> '35-' and LEFT(data0017_1.INV_PART_NUMBER, 3) <> '85-' and LEFT(data0017_1.INV_PART_NUMBER, 3) <> '25-' ) and (DATA0095_1.tran_tp=13 or DATA0095_1.TRAN_TP = 14)
GROUP BY DATA0006_1.WORK_ORDER_NUMBER, DATA0006_1.ROOT_PTR, DATA0006_1.RKEY, DATA0006_1.QUAN_SCH, DATA0006_1.QUAN_REJ, DATA0017_1.INV_PART_NUMBER
ORDER BY 2, 1
OPEN c1
FETCH NEXT FROM c1
INTO @RKEY, @totMcost, @totsoldcost
WHILE @@FETCH_STATUS = 0
BEGIN
/*SELECT @nValue = (SELECT RKEY FROM WIPStatusV3 WHERE RKEY=@RKEY)*/
UPDATE tempWIPAeroV1 SET WIPmatl = WIPmatl + @totMcost, WIP_sold = WIP_sold + @totsoldcost WHERE RKEY=@RKEY
FETCH NEXT FROM c1
INTO @RKEY, @totMcost, @totsoldcost
END
delete from WIPAeroV1
insert into WIPAeroV1 select * from tempWIPAeroV1
CLOSE c1
DEALLOCATE c1`
ALTER PROCEDURE [dbo].[spWIPMatl]
WITH RECOMPILE AS
BEGIN
with NewValues as
(
SELECT DATA0006_1.RKEY
, SUM(DATA0095_1.QUANTITY * DATA0017_1.STD_COST) AS Material_cost
, SUM(0.35 * DATA0095_1.QUANTITY) AS Sold_cost
FROM DATA0095 AS DATA0095_1
INNER JOIN DATA0017 AS DATA0017_1 ON DATA0095_1.INVT_PTR = DATA0017_1.RKEY
INNER JOIN DATA0067 AS DATA0067_1 ON DATA0095_1.SRCE_PTR = DATA0067_1.RKEY
RIGHT OUTER JOIN DATA0006 AS DATA0006_1 ON DATA0067_1.WO_PTR = DATA0006_1.RKEY
WHERE DATA0017_1.P_M = 'P'
and LEFT(data0017_1.INV_PART_NUMBER, 3) in ('25-', '85-')
and DATA0095_1.TRAN_TP in (13, 14)
GROUP BY DATA0006_1.WORK_ORDER_NUMBER
, DATA0006_1.ROOT_PTR
, DATA0006_1.RKEY
, DATA0006_1.QUAN_SCH
, DATA0006_1.QUAN_REJ
, DATA0017_1.INV_PART_NUMBER
union all
SELECT DATA0006_1.RKEY
, SUM(DATA0095_1.QUANTITY * DATA0017_1.STD_COST) AS Material_cost
, SUM(0.8 * DATA0095_1.QUANTITY) AS Sold_cost
FROM DATA0095 AS DATA0095_1
INNER JOIN DATA0017 AS DATA0017_1 ON DATA0095_1.INVT_PTR = DATA0017_1.RKEY
INNER JOIN DATA0067 AS DATA0067_1 ON DATA0095_1.SRCE_PTR = DATA0067_1.RKEY
RIGHT OUTER JOIN DATA0006 AS DATA0006_1 ON DATA0067_1.WO_PTR = DATA0006_1.RKEY
WHERE DATA0017_1.P_M = 'P'
and LEFT(data0017_1.INV_PART_NUMBER, 3) = '35-'
and DATA0095_1.tran_tp in (13, 14)
GROUP BY DATA0006_1.WORK_ORDER_NUMBER
, DATA0006_1.ROOT_PTR
, DATA0006_1.RKEY
, DATA0006_1.QUAN_SCH
, DATA0006_1.QUAN_REJ
, DATA0017_1.INV_PART_NUMBER
union all
SELECT DATA0006_1.RKEY
, SUM(DATA0095_1.QUANTITY * DATA0017_1.STD_COST) AS Material_cost
, SUM(0 * DATA0095_1.QUANTITY) AS Sold_cost
FROM DATA0095 DATA0095_1
INNER JOIN DATA0017 DATA0017_1 ON DATA0095_1.INVT_PTR = DATA0017_1.RKEY
INNER JOIN DATA0067 DATA0067_1 ON DATA0095_1.SRCE_PTR = DATA0067_1.RKEY
RIGHT OUTER JOIN DATA0006 DATA0006_1 ON DATA0067_1.WO_PTR = DATA0006_1.RKEY
WHERE data0017_1.P_M = 'P'
and LEFT(data0017_1.INV_PART_NUMBER, 3) not in ('35-', '85-', '25-')
and DATA0095_1.tran_tp in (13, 14)
GROUP BY DATA0006_1.WORK_ORDER_NUMBER
, DATA0006_1.ROOT_PTR
, DATA0006_1.RKEY
, DATA0006_1.QUAN_SCH
, DATA0006_1.QUAN_REJ
, DATA0017_1.INV_PART_NUMBER
)
UPDATE a SET WIPmatl = WIPmatl + nv.Material_cost
, WIP_sold = WIP_sold + nv.Sold_cost
from tempWIPAeroV1 a
join NewValues nv on nv.RKEY = a.RKEY
truncate table WIPAeroV1 --truncate will be quicker because it only has to log page drops instead of every row.
insert into WIPAeroV1 select * from tempWIPAeroV1 --you should always specify the columns in insert statements
END