@ActiveTo AND ListFrom <= @ActiveTo AND ListTo > @ActiveTo ) , CurrentBOM AS ( SELECT RUp.Level AS [Level] ,RUp.TreeId AS [PathId] ,PL.* FROM PDXpertDB.dbo.BOMRollup_UDF(@ItmId,@ActiveFrom,@MxLvl) RUp INNER JOIN PartList PL ON PL.RowId=RUp.Id WHERE ChildFrom <= @ActiveFrom AND ChildTo > @ActiveFrom AND ListFrom <= @ActiveFrom AND ListTo > @ActiveFrom ) SELECT ISNULL([Level],'') AS [Level] ,ISNULL([Row],'') AS [Find] ,[Action] ,[RelChldType] AS [CURRENT] ,[RelChldNumber] AS [Number] ,CASE WHEN LEN(RTRIM(ISNULL([RelChldLifecycle],''))) > 0 THEN LTRIM([RelChldRevision] + ' (' + [RelChldLifecycle] + ')') ELSE [RelChldRevision] END AS [Iteration] --,[RelChldRevision] AS [Revision] --,[RelChldLifecycle] AS [Lifecycle] ,[RelChldName] AS [Name] ,[RelQuantity] AS [Qty] ,[RelUOM] AS [Unit] ,[RelRefDes] AS [RefDes] ,[RelRowNote] AS [RowNote] ,[PndChldType] AS [PENDING] ,[PndChldNumber] AS [PndNumber] ,CASE WHEN LEN(RTRIM(ISNULL([PndChldLifecycle],''))) > 0 THEN LTRIM([PndChldRevision] + ' (' + [PndChldLifecycle] + ')') ELSE [PndChldRevision] END AS [Iteration] --,[PndChldRevision] AS [PndRevision] --,[PndChldLifecycle] AS [PndLifecycle] ,[PndChldName] AS [PndName] ,[PndQuantity] AS [PndQty] ,[PndUOM] AS [PndUnit] ,[PndRefDes] AS [PndRefDes] ,[PndRowNote] AS [PndRowNote] FROM ( SELECT -- root assembly 'TopAssembly' AS [List] ,@ActionIterateItem AS [Action] ,'0' AS [Level] ,'0' AS [Row] ,@EmptyGuid AS [RelRowId] ,'' AS [RelPrntType] ,'' AS [RelPrntNumber] ,'' AS [RelPrntName] ,[ItemId] AS [RelChldItmId] ,[Type] AS [RelChldType] ,[Number] AS [RelChldNumber] ,[RevId] AS [RelChldRevId] ,[Revision] AS [RelChldRevision] ,[Lifecycle] AS [RelChldLifecycle] ,[Description] AS [RelChldName] ,'' AS [RelQuantity] ,'' AS [RelUOM] ,'' AS [RelRefDes] ,'' AS [RelRowNote] ,@GrpRoot AS [RelPathId] ,0 AS [RelListFrom] ,0 AS [RelListTo] ,0 AS [RelChildFrom] ,0 AS [RelChildTo] ,0 AS [PndLevel] ,0 AS [PndFindRow] ,@EmptyGuid AS [PndRowId] ,'' AS [PndPrntType] ,'' AS [PndPrntNumber] ,'' AS [PndPrntName] ,@EmptyGuid AS [PndChldItmId] ,[Type] AS [PndChldType] ,[Number] AS [PndChldNumber] ,[PendingRevID] AS [PndChldRevId] ,[PendingRevision] AS [PndChldRevision] ,[PendingLifecycle] AS [PndChldLifecycle] ,[Description] AS [PndChldName] ,'' AS [PndQuantity] ,'' AS [PndUOM] ,'' AS [PndRefDes] ,'' AS [PndRowNote] ,@GrpRoot AS [PndPathId] ,0 AS [PndListFrom] ,0 AS [PndListTo] ,0 AS [PndChildFrom] ,0 AS [PndChildTo] ,@GrpRoot AS [PathId] ,@Nodepad AS [NodeId] FROM PDXpertDB.viewer.ItemView WHERE RevID = @RelRevId UNION ALL SELECT -- BOM rows 'BOMItem' AS [List] ,CASE WHEN RelBOM.PathId IS NULL THEN @ActionAddRow WHEN PndBOM.PathId IS NULL THEN @ActionRemoveRow WHEN (RelBOM.[ChildId] <> PndBOM.[ChildId]) THEN @ActionReplaceItem WHEN (RelBOM.[ChildRevId] <> PndBOM.[ChildRevId]) THEN @ActionIterateItem WHEN (RelBOM.[RowId] <> PndBOM.[RowId]) THEN 'Edit:' + Stuff( CASE WHEN (RelBOM.[Quantity] <> PndBOM.[Quantity]) THEN ',Qty' ELSE '' END + CASE WHEN (RelBOM.[UOM] <> PndBOM.[UOM]) THEN ',Unit' ELSE '' END + CASE WHEN (RelBOM.[RefDes] <> PndBOM.[RefDes]) THEN ',RefDes' ELSE '' END + CASE WHEN (RelBOM.[RowNote] <> PndBOM.[RowNote]) THEN ',Note' ELSE '' END , 1, 1, '') ELSE @ActionNoChange END AS [Action] ,ISNULL(RelBOM.[Level],PndBOM.[Level]) AS [Level] ,ISNULL(RelBOM.[FindRow],PndBOM.[FindRow]) AS [Row] ,RelBOM.[RowId] AS [RelRowId] ,ISNULL(RelBOM.[Type],'') AS [RelPrntType] ,ISNULL(RelBOM.[Number],'') AS [RelPrntNumber] ,ISNULL(RelBOM.[Name],'') AS [RelPrntName] ,RelBOM.[ChildId] AS [RelChldItmId] ,ISNULL(RelBOM.[ChildType],'') AS [RelChldType] ,ISNULL(RelBOM.[ChildNumber],'') AS [RelChldNumber] ,RelBOM.[ChildRevId] AS [RelChldRevId] ,ISNULL(RelBOM.[ChildRevision],'') AS [RelChldRevision] ,ISNULL(RelBOM.[ChildLifecycle],'') AS [RelChldLifecycle] ,ISNULL(RelBOM.[ChildName],'') AS [RelChldName] ,ISNULL(Cast(Convert(Decimal(18, 4), RelBOM.[Quantity]) AS varchar(20)),'') AS [RelQuantity] ,ISNULL(RelBOM.[UOM],'') AS [RelUOM] ,ISNULL(RelBOM.[RefDes],'') AS [RelRefDes] ,ISNULL(RelBOM.[RowNote],'') AS [RelRowNote] ,ISNULL(RelBOM.[PathId],'') AS [RelPathId] ,RelBOM.ListFrom ,RelBOM.ListTo ,RelBOM.ChildFrom ,RelBOM.ChildTo ,PndBOM.[Level] AS [PndLevel] ,PndBOM.[FindRow] AS [PndFindRow] ,PndBOM.[RowId] AS [PndRowId] ,ISNULL(PndBOM.[Type],'') AS [PndPrntType] ,ISNULL(PndBOM.[Number],'') AS [PndPrntNumber] ,ISNULL(PndBOM.[Name],'') AS [PndPrntName] ,PndBOM.[ChildId] AS [PndChldItmId] ,ISNULL(PndBOM.[ChildType],'') AS [PndChldType] ,ISNULL(PndBOM.[ChildNumber],'') AS [PndChldNumber] ,PndBOM.[ChildRevId] AS [PndChldRevId] ,ISNULL(PndBOM.[ChildRevision],'') AS [PndChldRevision] ,ISNULL(PndBOM.[ChildLifecycle],'') AS [PndChldLifecycle] ,ISNULL(PndBOM.[ChildName],'') AS [PndChldName] ,ISNULL(Cast(Convert(Decimal(18, 4), PndBOM.[Quantity]) AS varchar(20)),'') AS [PndQuantity] ,ISNULL(PndBOM.[UOM],'') AS [PndUOM] ,ISNULL(PndBOM.[RefDes],'') AS [PndRefDes] ,ISNULL(PndBOM.[RowNote],'') AS [PndRowNote] ,ISNULL(PndBOM.[PathId],'') AS [PndPathId] ,PndBOM.ListFrom ,PndBOM.ListTo ,PndBOM.ChildFrom ,PndBOM.ChildTo ,ISNULL(RelBOM.PathId,PndBOM.PathId) AS [PathId] ,@Nodepad AS [NodeId] FROM CurrentBOM AS RelBOM FULL OUTER JOIN MarkupBOM AS PndBOM ON PndBOM.PathId=RelBOM.PathId ) AssyFull WHERE (([Action] <> @ActionNoChange) OR (@IncludeNoChange = 'true')) AND (@RelRevId <> @EmptyGuid) AND (@PndRevId <> @EmptyGuid) ORDER BY PathId, NodeId ]]> Table2