At the end, it is coming up with a message 'MULTI-PART IDENTIFIER CTE2.STATUS COULD NOT BE BOUND" so I can't more forward as i'm confused as to what I can bind too.
DECLARE @customerId INT,
@supplierId INT,
@subscriptionId INT
SET @customerId = 400 SET @supplierId = 1 SET @subscriptionId = 23471
;WITH CTE1 AS
(
SELECT derivedtbl2.fldSupplierId, derivedtbl2.fldItemCode, derivedtbl2.fldIssueNumber, derivedtbl2.fldShipDate, derivedtbl2.fldStatus, derivedtbl2.fldIssueSequenceNumber,
tblSubscriptionSales_1.fldStatus AS SubStatus, tblSubscriptionSales_1.fldCustomerId
FROM
(SELECT TOP (100) PERCENT derivedtbl_1.fldSupplierId, derivedtbl_1.fldItemCode, tblSupplierData_1.fldIssueNumber, tblSupplierData_1.fldShipDate,
tblSupplierData_1.fldStatus, tblSupplierData_1.fldIssueSequenceNumber
FROM
(SELECT fldSupplierId, fldItemCode
FROM tblSupplierData
WHERE (fldSupplierId = @supplierID) AND (fldSubscriptionId = @subscriptionId)
UNION ALL
SELECT fldSupplierId, fldItemCode
FROM tblSubscriptionSales
WHERE (fldSupplierId = @supplierID) AND (fldSubscriptionId = @subscriptionId) AND (fldCustomerId = @customerID)) AS derivedtbl_1
INNER JOIN tblSupplierData AS tblSupplierData_1 ON derivedtbl_1.fldSupplierId = tblSupplierData_1.fldSupplierId
AND derivedtbl_1.fldItemCode = tblSupplierData_1.fldItemCode
ORDER BY tblSupplierData_1.fldShipDate DESC) AS derivedtbl2 INNER JOIN
tblSubscriptionSales AS tblSubscriptionSales_1 ON derivedtbl2.fldSupplierId = tblSubscriptionSales_1.fldSupplierId AND
derivedtbl2.fldItemCode = tblSubscriptionSales_1.fldItemCode
GROUP BY derivedtbl2.fldSupplierId, derivedtbl2.fldItemCode, derivedtbl2.fldIssueNumber, derivedtbl2.fldShipDate, derivedtbl2.fldStatus, derivedtbl2.fldIssueSequenceNumber,
tblSubscriptionSales_1.fldStatus, tblSubscriptionSales_1.fldCustomerId
HAVING (tblSubscriptionSales_1.fldCustomerId = @customerId) AND (tblSubscriptionSales_1.fldStatus = N'A') OR
(tblSubscriptionSales_1.fldCustomerId = @customerId) AND (tblSubscriptionSales_1.fldStatus = N'B') OR
(tblSubscriptionSales_1.fldCustomerId = @customerId) AND (tblSubscriptionSales_1.fldStatus = N'E') OR
(tblSubscriptionSales_1.fldCustomerId = @customerId) AND (tblSubscriptionSales_1.fldStatus = N'F') OR
(tblSubscriptionSales_1.fldCustomerId = @customerId) AND (tblSubscriptionSales_1.fldStatus = N'G') OR
(tblSubscriptionSales_1.fldCustomerId = @customerId) AND (tblSubscriptionSales_1.fldStatus = N'P')
),
CTE2 AS
(
SELECT fldIssueNumber, MAX(fldSupplierId) AS Expr1, MAX(fldItemCode) AS Expr2, fldStatus
FROM tblSupplierData
GROUP BY fldIssueNumber, fldSupplierId, fldSubscriptionId, fldStatus
HAVING (fldSubscriptionId = @subscriptionId) AND (fldSupplierId = @supplierId) AND (fldStatus = N'Y')
)
UPDATE CTE2 SET CTE2.fldStatus = 'N' FROM CTE1 INNER JOIN CTE2 ON CTE2.Expr1 = CTE1.fldSupplierId AND CTE2.Expr2 = CTE1.fldItemCode
SELECT tblSupplierData.fldSupplierId, tblSupplierData.fldItemCode
FROM tblSupplierData
WHERE (CTE2.fldStatus <> N'N')
INNER JOIN CTE2 AS tblSupplierData.fldSupplierId = CTE2.fldSupplierId AND tblSupplierData.fldItemCode = CTE2.fldItemCode