图片描述
记录开发实例(外包供应商排名报表数据-存储过程)
ALTER PROCEDURE p_getOutsourceSupplierRankingData
AS
BEGIN
DECLARE @years VARCHAR(8)
DECLARE @supplierCode VARCHAR(64)
DECLARE @supplierName VARCHAR (256)
DECLARE @outsourcePersonCode VARCHAR(64)
DECLARE @outsourcePersonName VARCHAR (128)
DECLARE @totalPrice DECIMAL ( 32, 2 )
DECLARE @outsourceItemQuantity VARCHAR(64)
DECLARE @m1 DECIMAL(32,2)
DECLARE @m2 DECIMAL(32,2)
DECLARE @m3 DECIMAL(32,2)
DECLARE @m4 DECIMAL(32,2)
DECLARE @m5 DECIMAL(32,2)
DECLARE @m6 DECIMAL(32,2)
DECLARE @m7 DECIMAL(32,2)
DECLARE @m8 DECIMAL(32,2)
DECLARE @m9 DECIMAL(32,2)
DECLARE @m10 DECIMAL(32,2)
DECLARE @m11 DECIMAL(32,2)
DECLARE @m12 DECIMAL(32,2)
DECLARE @counts INT = 0
DECLARE supplier_ranking_cursor CURSOR
FOR (
SELECT
agent_supplier_code,
agent_supplier_name,
agent_user_code,
agent_user_name,
DATEPART( yy, agent_open_case_time ) AS years,
COUNT(*) AS quantity
FROM
ms_testitem_agent_main
WHERE
valid_ind = '1'
AND agent_supplier_code IS NOT NULL
AND agent_open_case_time IS NOT NULL
GROUP BY
agent_supplier_code,
agent_supplier_name,
agent_user_code,
agent_user_name,
DATEPART( yy, agent_open_case_time )
)
OPEN supplier_ranking_cursor;
FETCH NEXT
FROM
supplier_ranking_cursor INTO @supplierCode,@supplierName,@outsourcePersonCode,@outsourcePersonName,@years,@outsourceItemQuantity;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @counts = (
SELECT COUNT
( 1 )
FROM
ms_outsource_supplier_ranking
WHERE
supplier_code = @supplierCode
AND outsource_person_code = @outsourcePersonCode
AND years = @years
)
IF @counts > 0
BEGIN
SET @m1 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 1 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m2 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 2 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m3 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 3 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m4 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 4 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m5 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 5 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m6 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 6 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m7 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 7 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m8 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 8 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m9 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 9 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m10 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 10 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m11 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 11 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m12 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 12 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years )
SET @totalPrice = @m1+@m2+@m3+@m4+@m5+@m6+@m7+@m8+@m9+@m10+@m11+@m12
UPDATE ms_outsource_supplier_ranking SET m1 = @m1 , m2 = @m2 , m3 = @m3 , m4 = @m4 , m5 = @m5 , m6 = @m6 ,m7 = @m7 , m8 = @m8 , m9 = @m9 , m10 = @m10 , m11 = @m11 ,m12 = @m12 , total_price = @totalPrice , outsource_item_quantity = @outsourceItemQuantity WHERE years = @years AND supplier_code = @supplierCode AND outsource_person_code = @outsourcePersonCode
END ;
ELSE
BEGIN
SET @m1 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 1 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m2 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 2 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m3 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 3 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m4 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 4 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m5 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 5 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m6 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 6 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m7 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 7 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m8 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 8 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m9 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 9 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m10 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 10 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m11 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 11 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years)
SET @m12 = (SELECT ISNULL(SUM(rmb_actual_agent_price),0) FROM ms_testitem_agent_main WHERE DATEPART(mm, agent_open_case_time) = 12 AND agent_supplier_code = @supplierCode AND agent_user_code = @outsourcePersonCode AND DATEPART(yy, agent_open_case_time) = @years )
SET @totalPrice = @m1+@m2+@m3+@m4+@m5+@m6+@m7+@m8+@m9+@m10+@m11+@m12
INSERT INTO ms_outsource_supplier_ranking(years,supplier_code,supplier_name,outsource_person_code,outsource_person_name,outsource_item_quantity,total_price,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12) VALUES(@years,@supplierCode,@supplierName,@outsourcePersonCode,@outsourcePersonName,@outsourceItemQuantity,@totalPrice,@m1,@m2,@m3,@m4,@m5,@m6,@m7,@m8,@m9,@m10,@m11,@m12)
END;
FETCH NEXT
FROM
supplier_ranking_cursor INTO @supplierCode,@supplierName,@outsourcePersonCode,@outsourcePersonName,@years,@outsourceItemQuantity;
END ;
close supplier_ranking_cursor;
deallocate supplier_ranking_cursor;
UPDATE mosr
SET mosr.person_department_code = soe.fd_parentid
FROM ms_outsource_supplier_ranking mosr
JOIN sys_org_element soe ON mosr.outsource_person_code = soe.fd_id
UPDATE mosr
SET mosr.person_department_name = soe.fd_name
FROM ms_outsource_supplier_ranking mosr
JOIN sys_org_element soe ON mosr.person_department_code = soe.fd_id
END;
连接更新
UPDATE mtior
SET mtior.testitem_id = mltm.testitem_id
FROM
ms_lab_testitem_main mltm
JOIN ms_testItem_outlay_record mtior ON mltm.detail_id = mtior.detail_id
WHERE
CHARINDEX( '.', mltm.lab_testitem_serialno ) = 0