This commit is contained in:
PastSaid
2024-07-16 10:33:50 +08:00
parent e8a1f46c3d
commit fa480006a8
132 changed files with 20893 additions and 4519 deletions

View File

@@ -0,0 +1,445 @@
IF EXISTS (SELECT 1 WHERE object_id('tempdb..#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>') IS NOT NULL)
DROP TABLE [dbo].#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GO
IF EXISTS (SELECT 1 WHERE object_id('tempdb..#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>') IS NOT NULL)
DROP TABLE [dbo].#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
GO
IF EXISTS (SELECT 1 WHERE object_id('tempdb..#<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3>_<EFBFBD><5F>ʱ<EFBFBD><CAB1>') IS NOT NULL)
DROP TABLE [dbo].#<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3>_<EFBFBD><5F>ʱ<EFBFBD><CAB1>
GO
CREATE TABLE #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(
[FBILLNO] nvarchar(80) NULL,
[FID] int NOT NULL,
[FENTRYID] int NOT NULL,
[TopMaterialId] int NULL,
[FMATERIALID] int NULL,
[FFORMID] varchar(36) NULL,
[<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] decimal(23, 10) NOT NULL,
[FSTATUS] char(1) NULL,
[FCOSTDATE] datetime NULL,
[FQTY] decimal(23, 10) NOT NULL,
[FPERIOD] int NULL
) ON [PRIMARY]
declare @sqlL varchar(max)
declare @billNo varchar(100),@materialNumber varchar(100)
declare @dbName varchar(100)
SET @sqlL = N'
INSERT INTO #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SELECT t0.FBILLNO,t0.FID,t0e.FENTRYID,t0e.FMATERIALID AS TopMaterialId,t0e.FMATERIALID
,t0.FFORMID AS FFORMID,t0e_a.FSTOCKINQUASELAUXQTY AS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0e_a.FSTATUS,t0e_a.FCOSTDATE,t0e_a.FSTOCKINQUASELAUXQTY AS FQTY
,CONVERT(INT, CONVERT(VARCHAR(6),ISNULL(t0e_a.FCOSTDATE,GETDATE()),112)) AS FPERIOD
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
'
select @dbName = db_name()
if @dbName != 'AIS20231110222743'
BEGIN
SET @billNo = 'WO2403210039'
--SET @billNo = 'WO2310240111'
--SET @billNo = 'TO2310120003'
SET @billNo = 'RO2403280019'
--SET @billNo = 'WO2304230023'
--SET @billNo = 'WO2310240112'
END
IF @billNo != '' OR @materialNumber = ''
BEGIN
SET @sqlL = @sqlL + N' AND t0.FBILLNO = ''' + @billNo + ''''
END
IF @materialNumber != ''
BEGIN
SET @sqlL = @sqlL + N' AND t1.FNUMBER = ''' + @materialNumber + ''''
END
EXEC(@sqlL)
;WITH #TopMo AS (
SELECT * FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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 'FBASEACTUALQTY'
,MAX(CONVERT(int,CONVERT(varchar(6),t1.FDATE,112))) AS 'FPERIOD'
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
)
, #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> AS (
SELECT t0e.FLOT,t0e.FLOT_TEXT,t0e.FMATERIALID,'PRD_MO' AS 'FFORMID'
,SUM(t0e.FAMOUNT) AS 'FAMOUNT',t0e.FMOENTRYID,t0e.FMOBILLNO
,SUM(t0e_q.FACTUALQTY) AS 'FQTY'
,MAX(CONVERT(int,CONVERT(varchar(6),t0.FDATE,112))) AS 'FPERIOD'
FROM T_PRD_FEEDMTRL t0
INNER JOIN T_PRD_FEEDMTRLDATA t0e on t0.FID = t0e.FID
INNER JOIN T_PRD_FEEDMTRLDATA_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT,t0e.FMOBILLNO
)
, #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> AS (
SELECT t0e.FLOT,t0e.FLOT_TEXT,t0e.FMATERIALID,'PRD_MO' AS 'FFORMID'
,-SUM(t0e.FAMOUNT) AS 'FAMOUNT',t0e.FMOENTRYID,t0e.FMOBILLNO
,-SUM(t0e.FQTY) AS 'FQTY'
,MAX(CONVERT(int,CONVERT(varchar(6),t0.FDATE,112))) AS 'FPERIOD'
FROM T_PRD_RETURNMTRL t0
INNER JOIN T_PRD_RETURNMTRLENTRY t0e on t0.FID = t0e.FID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT,t0e.FMOBILLNO
)
, #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϳɱ<CFB3> AS (
SELECT t0.FLOT,t0.FLOT_TEXT,t0.FMATERIALID,'PRD_MO' AS 'FFORMID'
,SUM(t0.FAMOUNT) AS 'FAMOUNT',t0.FMOENTRYID,t0.FMOBILLNO
,SUM(t0.FBASEACTUALQTY) AS 'FBASEACTUALQTY'
,MAX(t0.FPERIOD) AS 'FPERIOD'
FROM (
SELECT * FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
UNION ALL
SELECT * FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
UNION ALL
SELECT * FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
) t0
GROUP BY t0.FMOENTRYID,t0.FMATERIALID,t0.FLOT,t0.FLOT_TEXT,t0.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',t1e.FSUBREQBILLNO AS 'FMOBILLNO'
,SUM(t1e.FBASEACTUALQTY) AS 'FBASEACTUALQTY'
,MAX(CONVERT(int,CONVERT(varchar(6),t1.FDATE,112))) AS 'FPERIOD'
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,t1e.FSUBREQBILLNO
)
, <><EFBFBD>ϵ<EFBFBD> AS (
SELECT t0e.FLOT,t0e.FLOT_TEXT,t0e.FMATERIALID,'SUB_SUBREQORDER' AS 'FFORMID'
,SUM(t0e.FAMOUNT) AS 'FAMOUNT',t0e.FSUBREQENTRYID AS 'FMOENTRYID',t0e.FSUBREQBILLNO AS 'FMOBILLNO'
,SUM(t0e_q.FACTUALQTY) AS 'FQTY'
,MAX(CONVERT(int,CONVERT(varchar(6),t0.FDATE,112))) AS 'FPERIOD'
FROM T_SUB_FEEDMTRL t0
INNER JOIN T_SUB_FEEDMTRLENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_SUB_FEEDMTRLENTRY_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FLOT,t0e.FLOT_TEXT,t0e.FMATERIALID,t0e.FSUBREQENTRYID,t0e.FSUBREQBILLNO
)
, <><CEAF><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD> AS (
SELECT t0e.FLOT,t0e.FLOT_TEXT,t0e.FMATERIALID,'SUB_SUBREQORDER' AS 'FFORMID'
,-SUM(t0e.FAMOUNT) AS 'FAMOUNT',t0e_a.FSUBREQENTRYID AS 'FMOENTRYID',t0e_a.FSUBREQBILLNO AS 'FMOBILLNO'
,-SUM(t0e.FQTY) AS 'FQTY'
,MAX(CONVERT(int,CONVERT(varchar(6),t0.FDATE,112))) AS 'FPERIOD'
FROM T_SUB_RETURNMTRL t0
INNER JOIN T_SUB_RETURNMTRLENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_SUB_RETURNMTRLENTRY_A t0e_a on t0e.FENTRYID = t0e_a.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FLOT,t0e.FLOT_TEXT,t0e.FMATERIALID,t0e_a.FSUBREQENTRYID,t0e_a.FSUBREQBILLNO
)
, <><EFBFBD><E2B6A9><EFBFBD><EFBFBD><EFBFBD>ϳɱ<CFB3> AS (
SELECT t0.FLOT,t0.FLOT_TEXT,t0.FMATERIALID,'PRD_MO' AS 'FFORMID'
,SUM(t0.FAMOUNT) AS 'FAMOUNT',t0.FMOENTRYID,t0.FMOBILLNO
,SUM(t0.FBASEACTUALQTY) AS 'FBASEACTUALQTY'
,MAX(t0.FPERIOD) AS 'FPERIOD'
FROM (
SELECT * FROM <><CEAF><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
UNION ALL
SELECT * FROM <><EFBFBD>ϵ<EFBFBD>
UNION ALL
SELECT * FROM <><CEAF><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
) t0
GROUP BY t0.FMOENTRYID,t0.FMATERIALID,t0.FLOT,t0.FLOT_TEXT,t0.FMOBILLNO
)
, <>Ӳ<EFBFBD><D3B2><EFBFBD> AS (
SELECT t0.FID,t0.FBILLNO,t0e.FENTRYID,t0e.FMATERIALID AS MoMaterialId,t0e.FBOMID
,CONVERT(decimal(23,10),t0e_a.FSTOCKINQUASELAUXQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t1.FLOT,t1.FLOT_TEXT,t1.FMATERIALID,t1.FAMOUNT,t1.FMOENTRYID
,CONVERT(VARCHAR(36),'PRD_MO') AS 'FFORMID'
,t0e_a.FSTOCKINQUASELAUXQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',t1.FBASEACTUALQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t1.FPERIOD
,CASE WHEN ISNULL(t0.FID,0) = 0 THEN CAST(1 AS decimal(23,10)) ELSE CONVERT(decimal(23,10),t1.FBASEACTUALQTY / t0e.FBASEUNITQTY) END AS 'QtyRatio'
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϳɱ<CFB3> t1
LEFT JOIN T_PRD_MO t0 on t0.FBILLNO = t1.FLOT_TEXT
LEFT JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
LEFT JOIN T_PRD_MOENTRY_A t0e_a on t0e.FENTRYID = t0e_a.FENTRYID
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),'SUB_SUBREQORDER') AS 'FFORMID'
,t0e.FQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',t1.FBASEACTUALQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t1.FPERIOD
,CASE WHEN ISNULL(t0.FID,0) = 0 THEN CAST(1 AS decimal(23,10)) ELSE CONVERT(decimal(23,10),t1.FBASEACTUALQTY / t0e.FQTY) END AS 'QtyRatio'
FROM <><EFBFBD><E2B6A9><EFBFBD><EFBFBD><EFBFBD>ϳɱ<CFB3> 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),'') 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'
,CONVERT(decimal(23,10),1) AS 'TQtyRatio'
,CONVERT(decimal(23,10),0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>'
,CONVERT(decimal(23,10),0) AS '<EFBFBD><EFBFBD><EFBFBD>ϳɱ<EFBFBD>'
,t0.FQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0.FQTY AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0.FPERIOD
,t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0.FFORMID
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(tt.MoBillNo,''),'>'))
,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),tt.QtyRatio)
,CONVERT(decimal(23,10),tt.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>)
,CONVERT(decimal(23,10),t0.FAMOUNT)
,CONVERT(decimal(23,10),t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
,t0.FPERIOD
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.FFORMID,'')
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> tt
CROSS APPLY (
SELECT *
FROM <>Ӳ<EFBFBD><D3B2><EFBFBD> t0
WHERE t0.FFORMID = tt.FFORMID
AND t0.FMOENTRYID = tt.MoEntryId
) t0
WHERE 1=1
AND CHARINDEX(tt.MoBillNo,tt.MPath) = 0
)
SELECT *
INTO #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;WITH #<23>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD> AS (
SELECT
t0.FPRODUCTDIMEID
,t0.FPRODUCTNO
,t0.FPRODUCTID
,t0.FBILLID
,t0.FBILLENTRYID
,t2.FMATERIALID
,t2e.FEXPENSESITEMID
,t2e.FCOSTITEMID
,SUM(t2e.FQUALIFIEDINAMOUNT) AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM(t2e.FCURRINPUTAMOUNT) AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,MAX(t2.FSUMQUALIFIEDINQTY) AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,MAX(t2.FSUMCURRINPUTQTY) AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,MAX(t3.FSUMQUALIFIEDINQTY) AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2'
,MAX(t3.FSUMCURRINPUTQTY) AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2'
,t2.FEXPTYPE
,tt.aPATH
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> tt
INNER JOIN T_CB_PROORDERDIME t0 on tt.MoEntryId = t0.FBILLENTRYID AND tt.MoId = t0.FBILLID
INNER JOIN V_CB_PROORDERINFO t1 ON t1.FPRODUCTDIMEID= t0.FPRODUCTDIMEID
INNER JOIN V_CB_COSTMATTERIAL t2 on t2.FID = t1.FID
INNER JOIN V_CB_COSTMATTERIALDETAIL t2e on t2.FENTRYID = t2e.FENTRYID
INNER JOIN V_CB_COSTCALEXPENSE t3 on t3.FID = t2.FID
CROSS APPLY(
SELECT TOP 1 1 AS 'val'
FROM V_HS_OUTACCTG t5
WHERE t5.FID = t1.FACCTGID
AND (tt.FPERIOD IS NULL OR t5.FYEAR *100 + t5.FPERIOD <= tt.FPERIOD)
ORDER BY t5.FYEAR *100 + t5.FPERIOD DESC
) t4
WHERE 1=1
AND tt.MoEntryId != 0
GROUP BY t0.FPRODUCTDIMEID,t0.FPRODUCTNO,t0.FPRODUCTID,t0.FBILLID,t0.FBILLENTRYID
,t2.FMATERIALID,t2e.FEXPENSESITEMID,t2e.FCOSTITEMID
,t2.FEXPTYPE
,tt.aPATH
)
, #<23><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> AS (
SELECT *
FROM (
SELECT SUM(t0.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',t0.FBILLENTRYID
,t0.aPATH
,CASE t0.FEXPTYPE WHEN 0 THEN 'ֱ<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>' WHEN 1 THEN '<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>' ELSE t1.FNAME END AS '<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>'
FROM #<23>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD> t0
LEFT JOIN V_BD_COST_RESTORE_EXPENSE t1 on t0.FEXPENSESITEMID = t1.FEXPID
GROUP BY t0.FBILLENTRYID,t0.FEXPTYPE,t0.aPATH,t1.FNAME
) t0
PIVOT(
SUM(t0.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) FOR
t0.<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> IN (ֱ<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>,ֱ<EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD>,ְ<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>,<EFBFBD>ɷ<EFBFBD>֧<EFBFBD><EFBFBD>,<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>,ҵ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>̯<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>,ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ӹ<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ί<EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ϳɱ<EFBFBD>)
) AS t1
)
, <>Ӳ<EFBFBD><D3B2>ϼ<EFBFBD><CFBC><EFBFBD> AS (
SELECT tt.*
,CASE tt.MoId WHEN 0 THEN tt.<EFBFBD><EFBFBD><EFBFBD>ϳɱ<EFBFBD> ELSE ISNULL(t2.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) END '<EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD>'
,CASE tt.MoId WHEN 0 THEN t1.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ELSE ISNULL(t2.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) END AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CASE tt.MoId WHEN 0 THEN t1.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ELSE ISNULL(t2.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) END AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CASE tt.MoId WHEN 0 THEN t1.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ELSE ISNULL(t2.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1) END AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CASE tt.MoId WHEN 0 THEN t1.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ELSE ISNULL(t2.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1) END AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CASE t1.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WHEN 0 THEN 0 ELSE ISNULL(t1.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1)/ ISNULL(t1.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1) END 'Ͷ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>'
FROM #<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> tt
OUTER APPLY (
SELECT
t0.FPRODUCTDIMEID
,t0.FPRODUCTNO
,t0.FBILLID
,t0.FBILLENTRYID
,t0.FMATERIALID
,SUM(t0.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM(t0.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,MAX(t0.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,MAX(t0.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
FROM #<23>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD> t0
WHERE 1=1
AND t0.FEXPTYPE = 0
AND t0.aPATH = tt.PPATH
AND t0.FMATERIALID = tt.FMATERIALID
GROUP BY t0.FPRODUCTDIMEID,t0.FPRODUCTNO,t0.FBILLID,t0.FBILLENTRYID,t0.FMATERIALID
) t1
LEFT JOIN (
SELECT
t0.FPRODUCTDIMEID
,t0.FPRODUCTNO
,t0.FBILLID
,t0.FBILLENTRYID
,t0.FPRODUCTID
,SUM(t0.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM(t0.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,MAX(t0.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2) '<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,MAX(t0.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2) AS '<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0.aPATH
FROM #<23>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD> t0
WHERE 1=1
GROUP BY t0.FPRODUCTDIMEID,t0.FPRODUCTNO,t0.FBILLID,t0.FBILLENTRYID
,t0.FPRODUCTID,t0.aPATH
) t2 on t2.aPATH = tt.aPATH AND t2.FPRODUCTID = tt.FMATERIALID
)
, #<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3> AS (
SELECT tt.MoBillNo,tt.PMoBillNo,tt.FMATERIALID,tt.lv
,<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,Ͷ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>
,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,CAST(tt.<EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD> AS decimal(23,10)) AS '<EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD>'
,CAST(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS decimal(23,10)) '<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD>'
,aPATH,PPATH
,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,FFORMID
,tt.MPath,tt.MoId,tt.MoEntryId,tt.MoMaterialId,tt.PMoId,tt.PMoEntryId
,tt.PMoMaterialId,tt.TopMaterialId
,tt.FLOT,tt.FLOT_TEXT,tt.FAMOUNT,tt.FPERIOD
FROM <>Ӳ<EFBFBD><D3B2>ϼ<EFBFBD><CFBC><EFBFBD> tt
WHERE tt.lv = 0
UNION ALL
SELECT tt.MoBillNo,tt.PMoBillNo,tt.FMATERIALID,tt.lv
,tt.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,tt.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,tt.<EFBFBD>ۼ<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt.Ͷ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>
,tt.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,tt.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,CAST(tt.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / tt.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * t0.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> * tt.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * tt.Ͷ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD> AS decimal(23,10))
,CAST(tt.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / tt.<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * t0.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS decimal(23,10))
,tt.aPATH,tt.PPATH
,tt.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,tt.FFORMID
,tt.MPath,tt.MoId,tt.MoEntryId,tt.MoMaterialId,tt.PMoId,tt.PMoEntryId
,tt.PMoMaterialId,tt.TopMaterialId
,tt.FLOT,tt.FLOT_TEXT,tt.FAMOUNT,tt.FPERIOD
FROM <>Ӳ<EFBFBD><D3B2>ϼ<EFBFBD><CFBC><EFBFBD> tt
INNER JOIN #<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3> t0 on tt.lv = t0.lv + 1 AND tt.PPATH = t0.aPATH
)
SELECT tt.*
,ISNULL(t0.ֱ<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS 'ֱ<EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.ֱ<EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS 'ֱ<EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.ְ<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS 'ְ<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD>ɷ<EFBFBD>֧<EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD>ɷ<EFBFBD>֧<EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>'
,ISNULL(t0.ҵ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS 'ҵ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>̯<EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>̯<EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>'
,ISNULL(t0.ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS 'ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD>ӹ<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD>ӹ<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.ί<EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS 'ί<EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t0.<EFBFBD><EFBFBD><EFBFBD>ϳɱ<EFBFBD>,0) * tt.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD>ϳɱ<EFBFBD>'
INTO #<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3>_<EFBFBD><5F>ʱ<EFBFBD><CAB1>
FROM #<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3> tt
LEFT JOIN #<23><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> t0 on tt.aPATH = t0.aPATH
ORDER BY CAST(CONCAT('/',REPLACE(tt.aPATH,'.','/'),'/') AS HIERARCHYID)
;WITH <>ʹ<EFBFBD>ʱ<EFBFBD>鼯 AS (
SELECT t0e.FPROORDERNO,t0e.FPROORDERENTRYID,FCOSTCENTERID
,SUM(t0e.FHRWORKTIME) AS '<EFBFBD><EFBFBD>Աʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ',SUM(t0e.FRPTQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM(t2e.FHRWORKTIME) FHRWORKTIME,SUM(t2e.FFINISHQTY) FFINISHQTY
FROM T_CB_WORKHOURSENTRY t0e
INNER JOIN T_PRD_MORPTENTRY t2e on t2e.FENTRYID = t0e.FSRCENTRYID
WHERE t0e.FSRCBILLFORMID = 'PRD_MORPT'
GROUP BY t0e.FPROORDERNO,t0e.FPROORDERENTRYID,FCOSTCENTERID
)
, #<23><>ʱ AS (
SELECT t0.*
,CASE ISNULL(t6.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) WHEN 0 THEN 0 ELSE ISNULL(t6.<EFBFBD><EFBFBD>Աʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,0) / ISNULL(t6.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) END AS '<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB'
,(CASE LEFT(t0.MoBillNo,2) WHEN 'WO' THEN 1 WHEN 'TO' THEN 2 WHEN 'RO' THEN 3 WHEN 'RT' THEN 4 ELSE 0 END) AS 'MoType'
,CAST(CONCAT('/',REPLACE(t0.aPATH,'.','/'),'/') AS HIERARCHYID) PATH_ID
,(CASE t0.MoId WHEN 0 THEN t0.<EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD> ELSE 0 END) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
FROM #<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3>_<EFBFBD><5F>ʱ<EFBFBD><CAB1> t0
LEFT JOIN <>ʹ<EFBFBD>ʱ<EFBFBD>鼯 t6 on t6.FPROORDERENTRYID = t0.MoEntryId
)
, <>ƹ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ɱ<EFBFBD> AS (
SELECT
t0.aPATH
,SUM(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM(CASE t1.MoType WHEN 1 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB ELSE 0 END) '<EFBFBD><EFBFBD>ͨC'
,SUM(CASE t1.MoType WHEN 2 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>D'
,SUM(CASE t1.MoType WHEN 3 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>E'
,SUM(CASE t1.MoType WHEN 4 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F'
,SUM(CASE t1.MoType WHEN 0 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>G'
,SUM(CASE t1.MoType WHEN 1 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB * t1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * t1.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> ELSE 0 END) '<EFBFBD><EFBFBD>ͨI'
,SUM(CASE t1.MoType WHEN 2 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB * t1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * t1.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>J'
,SUM(CASE t1.MoType WHEN 3 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB * t1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * t1.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K'
,SUM(CASE t1.MoType WHEN 4 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB * t1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * t1.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L'
,SUM(CASE t1.MoType WHEN 0 THEN t1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʱB * t1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * t1.<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD> ELSE 0 END) '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>M'
FROM #<23><>ʱ t0
INNER JOIN #<23><>ʱ t1 ON t1.PATH_ID.IsDescendantOf(t0.PATH_ID) = 1
GROUP BY t0.aPATH
)
SELECT *
FROM #<23><><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<C3B3>_<EFBFBD><5F>ʱ<EFBFBD><CAB1> t0
INNER JOIN <>ƹ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ɱ<EFBFBD> t1 on t0.aPATH = t1.aPATH