225 lines
7.6 KiB
MySQL
225 lines
7.6 KiB
MySQL
|
|
declare @sqlL varchar(max)
|
|||
|
|
declare @billNo varchar(100),@materialNumber varchar(100)
|
|||
|
|
,@sYear int,@sMonth int
|
|||
|
|
,@eYear int,@eMonth int
|
|||
|
|
SELECT @sYear = 0,@eYear = 0,@sMonth = 0,@eMonth = 0
|
|||
|
|
|
|||
|
|
--SELECT @sYear = 2024,@eYear = 2024,@sMonth = 2,@eMonth = 2
|
|||
|
|
SET @sqlL = N'
|
|||
|
|
SELECT t0.FBILLNO,t0.FID,t0e.FENTRYID,t0e.FMATERIALID AS TopMaterialId,t0e.FMATERIALID
|
|||
|
|
,t0.FFORMID AS FFORMID,t0e_a.FSTOCKINQUASELAUXQTY AS <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,t0e_a.FSTATUS,t0e_a.FCOSTDATE,t0e.FBASEUNITQTY AS FQTY
|
|||
|
|
INTO ##<23><><EFBFBD>Ҷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
|
FROM T_PRD_MO t0
|
|||
|
|
INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
|
|||
|
|
INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e.FENTRYID = t0e_a.FENTRYID
|
|||
|
|
INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0e.FMATERIALID
|
|||
|
|
WHERE 1 = 1
|
|||
|
|
'
|
|||
|
|
SET @billNo = ''
|
|||
|
|
SET @materialNumber = ''
|
|||
|
|
--SET @billNo = 'RO2405090020'
|
|||
|
|
--SET @billNo = 'TO2405210015'
|
|||
|
|
--SET @billNo = 'WO2405160002'
|
|||
|
|
--SET @billNo = 'WO2405080005'
|
|||
|
|
--SET @billNo = 'TO2404290033'
|
|||
|
|
--SET @billNo = 'TO2403250007'
|
|||
|
|
--SET @billNo = 'WO2403210039'
|
|||
|
|
--SET @billNo = 'RO2403130015'
|
|||
|
|
--SET @billNo = 'RO2403280019'
|
|||
|
|
--SET @billNo = 'TO2310120003'
|
|||
|
|
--SET @billNo = 'WO2310020141'
|
|||
|
|
--SET @billNo = 'WO2310240123'
|
|||
|
|
--SET @billNo = 'WO2310240112'
|
|||
|
|
|
|||
|
|
--SET @materialNumber = '03.70.0143'
|
|||
|
|
IF @billNo != ''
|
|||
|
|
BEGIN
|
|||
|
|
SET @sqlL = @sqlL + N' AND t0.FBILLNO = ''' + @billNo + ''''
|
|||
|
|
END
|
|||
|
|
|
|||
|
|
IF @materialNumber != ''
|
|||
|
|
BEGIN
|
|||
|
|
SET @sqlL = @sqlL + N' AND t1.FNUMBER = ''' + @materialNumber + ''''
|
|||
|
|
END
|
|||
|
|
|
|||
|
|
IF @sYear != 0 OR @sYear != 0 OR @sMonth != 0 OR @eMonth != 0
|
|||
|
|
BEGIN
|
|||
|
|
SET @sqlL=CONCAT(@sqlL, ' AND ISNULL(YEAR(FCOSTDATE),0) BETWEEN ',@sYear,' AND ', @eYear)
|
|||
|
|
SET @sqlL=CONCAT(@sqlL, ' AND ISNULL(MONTH(FCOSTDATE),0) BETWEEN ',@sMonth,' AND ', @eMonth)
|
|||
|
|
END
|
|||
|
|
--SELECT @sqlL
|
|||
|
|
EXEC(@sqlL)
|
|||
|
|
;WITH #TopMo AS (
|
|||
|
|
SELECT * FROM ##<23><><EFBFBD>Ҷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
|
)
|
|||
|
|
,#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> AS (
|
|||
|
|
SELECT t1e.FLOT,t1e.FLOT_TEXT,t1e.FMATERIALID,'PRD_MO' AS 'FFORMID'
|
|||
|
|
,SUM(t1e.FAMOUNT) AS 'FAMOUNT',t1e.FMOENTRYID,t1e.FMOBILLNO
|
|||
|
|
,SUM(t1e.FBASEACTUALQTY) AS 'FQTY'
|
|||
|
|
FROM T_PRD_PICKMTRL t1
|
|||
|
|
INNER JOIN T_PRD_PICKMTRLDATA t1e on t1.FID = t1e.FID
|
|||
|
|
WHERE t1.FDOCUMENTSTATUS = 'C' AND t1e.FMOBILLNO != t1e.FLOT_TEXT
|
|||
|
|
GROUP BY t1e.FLOT,t1e.FLOT_TEXT,t1e.FMATERIALID,t1e.FMOENTRYID,t1e.FMOBILLNO
|
|||
|
|
)
|
|||
|
|
,#ί<><CEAF><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> AS (
|
|||
|
|
SELECT t1e.FLOT,t1e.FLOT_TEXT,t1e.FMATERIALID,'SUB_SUBREQORDER' AS 'FFORMID'
|
|||
|
|
,SUM(ISNULL(t1e_a.FAMOUNT,0)) FAMOUNT,t1e.FSUBREQENTRYID AS FMOENTRYID
|
|||
|
|
,SUM(t1e.FBASEACTUALQTY) AS 'FQTY'
|
|||
|
|
FROM T_SUB_PICKMTRL t1
|
|||
|
|
INNER JOIN T_SUB_PICKMTRLDATA t1e on t1.FID = t1e.FID
|
|||
|
|
INNER JOIN T_SUB_PICKMTRLDATA_A t1e_a on t1e.FENTRYID = t1e_a.FENTRYID
|
|||
|
|
WHERE t1.FDOCUMENTSTATUS = 'C'
|
|||
|
|
GROUP BY t1e.FLOT,t1e.FLOT_TEXT,t1e.FMATERIALID,t1e.FSUBREQENTRYID
|
|||
|
|
)
|
|||
|
|
, #<23><><EFBFBD>ϵ<EFBFBD> AS (
|
|||
|
|
SELECT t0.FID,t0.FBILLNO,t0e.FENTRYID,t0e.FMATERIALID AS MoMaterialId,t0e.FBOMID
|
|||
|
|
,CONVERT(decimal(23,10),0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t1.FLOT,t1.FLOT_TEXT,t1.FMATERIALID,t1.FAMOUNT,t1.FMOENTRYID
|
|||
|
|
,CONVERT(VARCHAR(36),t1.FFORMID) AS 'FFORMID'
|
|||
|
|
,t0e.FBASEUNITQTY,t1.FQTY
|
|||
|
|
,CASE WHEN t1.FQTY > ISNULL(t0e.FBASEUNITQTY,0) THEN 1 ELSE CONVERT(decimal(23,10),t1.FQTY / ISNULL(t0e.FBASEUNITQTY,t1.FQTY)) END AS 'QtyRatio'
|
|||
|
|
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> t1
|
|||
|
|
LEFT JOIN T_PRD_MO t0 on t0.FBILLNO = t1.FLOT_TEXT
|
|||
|
|
LEFT JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT t0.FID,t0.FBILLNO,t0e.FENTRYID,t0e.FMATERIALID AS MoMaterialId,t0e.FBOMID
|
|||
|
|
,t0e.FSTOCKINQTY
|
|||
|
|
,t1.FLOT,t1.FLOT_TEXT,t1.FMATERIALID,t1.FAMOUNT,t1.FMOENTRYID
|
|||
|
|
,CONVERT(VARCHAR(36),t1.FFORMID) AS 'FFORMID'
|
|||
|
|
,t0e.FQTY AS 'FBASEUNITQTY',t1.FQTY
|
|||
|
|
,CASE WHEN t1.FQTY > ISNULL(t0e.FQTY,0) THEN 1 ELSE CONVERT(decimal(23,10),t1.FQTY / ISNULL(t0e.FQTY,t1.FQTY)) END AS 'QtyRatio'
|
|||
|
|
FROM #ί<><CEAF><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> t1
|
|||
|
|
LEFT JOIN T_SUB_REQORDER t0 on t0.FBILLNO = t1.FLOT_TEXT
|
|||
|
|
LEFT JOIN T_SUB_REQORDERENTRY t0e on t0.FID = t0e.FID
|
|||
|
|
)
|
|||
|
|
, #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS (
|
|||
|
|
SELECT t0.FBILLNO AS 'MoBillNo'
|
|||
|
|
,t0.FBILLNO AS 'PMoBillNo'
|
|||
|
|
,CONVERT(varchar(1000),ROW_NUMBER() OVER (ORDER BY t0.FID,t0.FENTRYID,t0.FMATERIALID)) AS 'aPATH'
|
|||
|
|
,CONVERT(varchar(1000),'0') AS 'PPATH'
|
|||
|
|
,CONVERT(VARCHAR(8000),t0.FBILLNO) AS 'MPath'
|
|||
|
|
,0 AS 'lv'
|
|||
|
|
,t0.FID AS 'MoId'
|
|||
|
|
,t0.FENTRYID AS 'MoEntryId'
|
|||
|
|
,t0.FMATERIALID AS 'MoMaterialId'
|
|||
|
|
,0 AS 'PMoId'
|
|||
|
|
,0 AS 'PMoEntryId'
|
|||
|
|
,0 AS 'PMoMaterialId'
|
|||
|
|
,t0.TopMaterialId
|
|||
|
|
,t0.FMATERIALID
|
|||
|
|
,0 FLOT
|
|||
|
|
,CONVERT(nvarchar(255),'') AS 'FLOT_TEXT'
|
|||
|
|
,CONVERT(decimal(23,10),0) AS 'FAMOUNT'
|
|||
|
|
,CONVERT(decimal(23,10),1) AS 'QtyRatio'
|
|||
|
|
,t0.FQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t0.FQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,t0.FFORMID
|
|||
|
|
,0 AS 'isTrue'
|
|||
|
|
FROM #TopMo t0
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT ISNULL(t0.FBILLNO,'') AS 'MoBillNo'
|
|||
|
|
,tt.MoBillNo
|
|||
|
|
,CONVERT(varchar(1000),CONCAT(tt.aPATH,'.',ROW_NUMBER() OVER (PARTITION BY tt.MoId,tt.MoEntryId ORDER BY t0.FMATERIALID))) AS 'aPATH'
|
|||
|
|
,tt.aPATH
|
|||
|
|
,CONVERT(varchar(8000),CONCAT(tt.MPath,'>',ISNULL(t0.FBILLNO,'')))
|
|||
|
|
,tt.lv + 1 lv
|
|||
|
|
,ISNULL(t0.FID,0) AS 'MoId'
|
|||
|
|
,ISNULL(t0.FENTRYID,0) AS 'MoEntryId'
|
|||
|
|
,ISNULL(t0.MoMaterialId, 0)
|
|||
|
|
,tt.MoId AS 'PMoId'
|
|||
|
|
,tt.MoEntryId AS 'PMoEntryId'
|
|||
|
|
,tt.MoMaterialId AS 'PMoMaterialId'
|
|||
|
|
,tt.TopMaterialId
|
|||
|
|
,t0.FMATERIALID
|
|||
|
|
,t0.FLOT
|
|||
|
|
,t0.FLOT_TEXT
|
|||
|
|
,CONVERT(decimal(23,10),t0.FAMOUNT * tt.QtyRatio)
|
|||
|
|
,CONVERT(decimal(23,10),tt.QtyRatio * t0.QtyRatio)
|
|||
|
|
,CONVERT(decimal(23,10),t0.FQTY)
|
|||
|
|
,t0.FBASEUNITQTY
|
|||
|
|
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,ISNULL(t0.FFORMID,'')
|
|||
|
|
,CASE WHEN t0.FBILLNO = tt.MoBillNo THEN 1 ELSE 0 END AS 'isTrue'
|
|||
|
|
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> tt
|
|||
|
|
CROSS APPLY (
|
|||
|
|
SELECT *
|
|||
|
|
FROM #<23><><EFBFBD>ϵ<EFBFBD> t0
|
|||
|
|
WHERE t0.FFORMID = tt.FFORMID
|
|||
|
|
AND t0.FMOENTRYID = tt.MoEntryId
|
|||
|
|
--AND CHARINDEX(t0.FBILLNO,tt.MPath) = 0
|
|||
|
|
) t0
|
|||
|
|
WHERE 1=1
|
|||
|
|
AND tt.isTrue = 0
|
|||
|
|
)
|
|||
|
|
,#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ AS (
|
|||
|
|
SELECT
|
|||
|
|
t0.FBILLID
|
|||
|
|
,t0.FBILLENTRYID
|
|||
|
|
,t0.FBILLSEQ
|
|||
|
|
--,t2_l.FNAME AS '<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>Ŀ'
|
|||
|
|
,t1e.FCOSTITEMID
|
|||
|
|
--,t3_l.FNAME AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ'
|
|||
|
|
,t1e.FEXPENSESITEMID
|
|||
|
|
,t1e.FQUALIFIEDINAMOUNT AS 'FAMOUNT'
|
|||
|
|
FROM (SELECT MoEntryId FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WHERE MoId > 0) tt
|
|||
|
|
INNER JOIN T_CB_PROORDERDIME t0 on t0.FBILLENTRYID = tt.MoEntryId
|
|||
|
|
INNER JOIN V_CB_PROORDERINFO t0e ON t0e.FPRODUCTDIMEID = t0.FPRODUCTDIMEID
|
|||
|
|
INNER JOIN V_CB_COSTCALEXPENSE t1 ON t1.FID = t0e.FID
|
|||
|
|
INNER JOIN V_CB_COSTCALEXPENSEDETAIL t1e ON t1.FENTRYID = t1e.FENTRYID
|
|||
|
|
)
|
|||
|
|
, #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ AS (
|
|||
|
|
SELECT *
|
|||
|
|
FROM (SELECT FBILLENTRYID AS 'EXP_BILLENTRYID',t1.fieldName AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ',FAMOUNT
|
|||
|
|
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ t0
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT 'ֱ<EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD>' AS 'FNAME',4655037 AS 'FEXPID','O1' AS 'fieldName'
|
|||
|
|
UNION ALL SELECT 'ְ<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>',4655057,'O2'
|
|||
|
|
UNION ALL SELECT '<EFBFBD>ɷ<EFBFBD>֧<EFBFBD><EFBFBD>',0,'O3'
|
|||
|
|
UNION ALL SELECT '<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0,'O4'
|
|||
|
|
UNION ALL SELECT '<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>',20138,'O5'
|
|||
|
|
UNION ALL SELECT '<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>',4655087,'O5'
|
|||
|
|
UNION ALL SELECT 'ҵ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>',20137,'O6'
|
|||
|
|
UNION ALL SELECT '<EFBFBD>칫<EFBFBD><EFBFBD>',20142,'O7'
|
|||
|
|
UNION ALL SELECT '<EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>̯<EFBFBD><EFBFBD>',4655095,'O8'
|
|||
|
|
UNION ALL SELECT '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>',20602,'O9'
|
|||
|
|
UNION ALL SELECT 'ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>',4655100,'O10'
|
|||
|
|
UNION ALL SELECT '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',4655098,'O11'
|
|||
|
|
UNION ALL SELECT '<EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0,'O12'
|
|||
|
|
UNION ALL SELECT '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD>',0,'O13'
|
|||
|
|
UNION ALL SELECT '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>',4655093,'O14'
|
|||
|
|
UNION ALL SELECT 'ί<EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD>',20048,'O15'
|
|||
|
|
UNION ALL SELECT '<EFBFBD><EFBFBD><EFBFBD>ϳɱ<EFBFBD>',20045,'O16'
|
|||
|
|
) t1 on t0.FEXPENSESITEMID = t1.FEXPID
|
|||
|
|
) t0
|
|||
|
|
PIVOT
|
|||
|
|
(
|
|||
|
|
SUM(t0.FAMOUNT) FOR
|
|||
|
|
t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16)
|
|||
|
|
) AS t1
|
|||
|
|
)
|
|||
|
|
, #<23>ɱ<EFBFBD><C9B1><EFBFBD>Ŀ AS (
|
|||
|
|
SELECT *
|
|||
|
|
FROM (
|
|||
|
|
SELECT FBILLENTRYID AS 'COST_BILLENTRYID',FAMOUNT
|
|||
|
|
,t2_l.<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|||
|
|
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ t0
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT FCOSTITEMID,CONCAT('P',ROW_NUMBER() OVER (ORDER BY t2_l.FCOSTITEMID)) <EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|||
|
|
FROM T_HS_COSTITEM_L t2_l
|
|||
|
|
WHERE t2_l.FLOCALEID = 2052
|
|||
|
|
) t2_l on t0.FCOSTITEMID = t2_l.FCOSTITEMID
|
|||
|
|
) t0
|
|||
|
|
PIVOT
|
|||
|
|
(
|
|||
|
|
SUM(t0.FAMOUNT) FOR
|
|||
|
|
t0.<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>Ŀ IN (P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12)
|
|||
|
|
) AS t1
|
|||
|
|
)
|
|||
|
|
SELECT *
|
|||
|
|
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> tt
|
|||
|
|
LEFT JOIN #<23>ɱ<EFBFBD><C9B1><EFBFBD>Ŀ t0 on tt.MoEntryId = t0.COST_BILLENTRYID
|
|||
|
|
LEFT JOIN #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ t1 on tt.MoEntryId = t1.EXP_BILLENTRYID
|
|||
|
|
DROP TABLE ##<23><><EFBFBD>Ҷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|