--try
SELECT P.PurchaseOrderId, O.Status AS POStatus, O.PONumber
FROM
(
SELECT distinct b.PurchaseOrderId
FROM view_SaleContract_ProductTableItem_SN AS a ,
view_PurchaseOrder_ProductTableItem_SN AS b where (a.SN = b.SN AND
a.ProductID = b.ProductID AND a.IsService = 0) OR
(a.IsService = 1 AND a.LinkItemSN = b.LinkItemSN AND
a.LinkItemProductID = b.LinkItemProductID ) and
SaleContractId = ? AND b.TableStatus = 3) P LEFT OUTER JOIN
dbo.PurchaseOrder O ON P.PurchaseOrderId = O.ID
WHERE (P.PurchaseOrderId IS NOT NULL)
ORDER BY O.PONumber
SELECT P.PurchaseOrderId, O.Status AS POStatus, O.PONumber
FROM
(
SELECT distinct b.PurchaseOrderId
FROM view_SaleContract_ProductTableItem_SN AS a ,
view_PurchaseOrder_ProductTableItem_SN AS b where (a.SN = b.SN AND
a.ProductID = b.ProductID AND a.IsService = 0) OR
(a.IsService = 1 AND a.LinkItemSN = b.LinkItemSN AND
a.LinkItemProductID = b.LinkItemProductID ) and
SaleContractId = ? AND b.TableStatus = 3) P LEFT OUTER JOIN
dbo.PurchaseOrder O ON P.PurchaseOrderId = O.ID
WHERE (P.PurchaseOrderId IS NOT NULL)
ORDER BY O.PONumber
SELECT P.PurchaseOrderId, O.Status AS POStatus, O.PONumber
FROM (
SELECT a.SaleContractId, b.PurchaseOrderId
FROM (SELECT SN,ProductID,SaleContractId
FROM view_SaleContract_ProductTableItem_SN
WHERE SaleContractId = 3986 AND IsService = 0) AS a inner JOIN
(SELECT SN,ProductID,PurchaseOrderId
FROM view_PurchaseOrder_ProductTableItem_SN
WHERE TableStatus = 3) AS b ON (a.SN = b.SN AND
a.ProductID = b.ProductID)
UNION
SELECT a.SaleContractId, b.PurchaseOrderId
FROM (SELECT SaleContractId,ServiceTimeFrom,ServiceTimeTo,LinkItemSN,LinkItemProductID
FROM view_SaleContract_ProductTableItem_SN
WHERE SaleContractId = 3986 AND IsService = 1) AS a inner JOIN
(SELECT PurchaseOrderId,ServiceTimeFrom,ServiceTimeTo,LinkItemSN,LinkItemProductID
FROM view_PurchaseOrder_ProductTableItem_SN
WHERE TableStatus = 3) AS b ON
(a.ServiceTimeFrom <= b.ServiceTimeFrom AND
a.ServiceTimeTo >= b.ServiceTimeTo AND a.LinkItemSN = b.LinkItemSN AND
a.LinkItemProductID = b.LinkItemProductID)) P LEFT OUTER JOIN
dbo.PurchaseOrder O ON P.PurchaseOrderId = O.ID
ORDER BY O.PONumber