test
🧩 Syntax:
WITH MendixOrdersWithPrevious AS (
SELECT *,
LAG(CASE
WHEN ActualResourceName IS NOT NULL THEN ActualResourceName
ELSE ResourceName
END
) OVER (PARTITION BY OrderNo ORDER BY OpNo) AS PreviousResource,
CASE
WHEN ActualResourceName IS NOT NULL THEN ActualResourceName
ELSE ResourceName
END AS ResourceUsage
FROM [FAI-MendixDB].dbo.MendixOrders
),
SubsequentResources AS (
SELECT
P.PartNo,
P.Product,
P.OpNo,
P.OperationName AS fromOperation,
P.Plant,
P.Revisions,
RG.Name AS ResourceGroup,
R.Name AS ResourceName,
R1.Name AS SubsequentResource,
P1.OperationName AS SubsequentOperation
FROM
[FAI-ASDB-DEV].UserData.Products P
INNER JOIN [FAI-ASDB-DEV].UserData.ResourceGroups RG
ON RG.ResourceGroupsId = P.ResourceGroup
INNER JOIN [FAI-ASDB-DEV].UserData.ResourceGroupsResources RGR
ON RGR.ResourceGroupsId = RG.ResourceGroupsId
INNER JOIN [FAI-ASDB-DEV].UserData.Resources R
ON R.ResourcesId = RGR.Resources
INNER JOIN [FAI-ASDB-DEV].UserData.ProductsResourceData PRD
ON PRD.ProductsId = P.ProductsId
AND PRD.ResourceData = R.ResourcesId
LEFT JOIN [FAI-ASDB-DEV].UserData.ResourceGroupsResources RGR1
ON RGR1.ResourceGroupsId = PRD.SetSubsequentResourceGroup
LEFT JOIN [FAI-ASDB-DEV].UserData.Resources R1
ON R1.ResourcesId = RGR1.Resources
LEFT JOIN [FAI-ASDB-DEV].UserData.Products P1
ON P.PartNo = P1.PartNo
AND P.__seq__Products + 1 = P1.__seq__Products
AND P.Revisions = P1.Revisions
AND P.Plant = P1.Plant
),
MendixOrdersSubsequentOperation AS (
SELECT
MO.OrderNo,
MO.PartNo,
MO.OperationName,
MO.ResourceUsage,
MO.Plant,
CASE WHEN MO.PreviousResource IS NULL AND MSFG.FromResource IS NOT NULL THEN MSFG.FromResource
ELSE MO.PreviousResource
END AS PreviousResource
FROM MendixOrdersWithPrevious MO
LEFT JOIN SubsequentResources SR
ON SR.PartNo = MO.PartNo
AND MO.OperationName = SR.fromOperation
AND MO.ResourceUsage = SR.ResourceName
AND MO.Plant = SR.Plant
LEFT JOIN [FAI-MendixDB].dbo.MendixSFGMaterial MSFG
ON MSFG.ToOrderNo=MO.OrderNo
AND MSFG.ToOpName=MO.OperationName
)
--select * from MendixOrdersSubsequentOperation
SELECT DISTINCT
MOS.OrderNo,
MOS.PartNo,
MOS.OperationName,
--MOS.ResourceUsage CurrentResource,
MOS.PreviousResource PreviousResourceOperation,
CASE WHEN SR.SubsequentResource IS NULL THEN SR1.ResourceName
ELSE SR.SubsequentResource
END AS ResourcesList
FROM
MendixOrdersSubsequentOperation MOS
LEFT JOIN SubsequentResources SR
ON SR.PartNo=MOS.PartNo
AND SR.Plant=MOS.Plant
AND SR.ResourceName=MOS.PreviousResource
AND SR.SubsequentOperation=MOS.OperationName
LEFT JOIN SubsequentResources SR1
ON SR1.PartNo=MOS.PartNo
AND SR1.fromOperation=MOS.OperationName
AND SR1.Plant=MOS.Plant
WHERE MOS.OrderNo=100154769
ORDER BY OrderNo