我正在尝试创建一个子查询来将两个表放在一起,但什么都没有。
代码:
SELECT DISTINCT Agreements.AgrmntID, Agreements.Status, JobSites.SiteName,
PurchaseOrderDetails.ExtCost
FROM Agreements Inner Join
JobSites On Agreements.CustSiteID = JobSites.CustSiteID
WHERE Agreements.Status = 2 And PurchaseOrderDetails.ExtCost = (Select
PurchaseOrderDetails.ExtCost
FROM PurchaseOrderDetails
Inner Join PurchaseOrders On PurchaseOrders.POID = PurchaseOrderDetails.POID
WHERE PurchaseOrders.Description Like ('%', JobSites.SiteName, '%') And
Convert(varchar(8),PurchaseOrderDetails.TimeCreated,1) = '09/10/12')
ORDER BY JobSites.SiteName
预期产出:
AgreemntID Status SiteName ExtCost
----------------------------------------
1 2 TEST01 $144.00
2 2 TEST02 $400.00
我正在使用子查询,因为除了PurchaseOrders下的描述之外,什么都没有将ExtCost链接到SiteName。
希望这对您有足够的帮助。提前谢谢!!
答案 0 :(得分:0)
在您编写问题时不确定这是否只是一个拼写错误,但在您的SQL中指定Agreements.Status = 2,但在您的示例中,您期望状态3的结果?
否则,我会先测试您的个别子查询,以确保您的数据符合您的预期格式,例如尝试运行
Select
PurchaseOrderDetails.ExtCost
FROM PurchaseOrderDetails
Inner Join PurchaseOrders On PurchaseOrders.POID = PurchaseOrderDetails.POID
WHERE PurchaseOrders.Description Like ('%', JobSites.SiteName, '%') And
Convert(varchar(8),PurchaseOrderDetails.TimeCreated,1) = '09/10/12'
看看你得到了什么等等。
答案 1 :(得分:0)
如果我认为我理解你想要做什么,你可以使用像这样的外部应用
SELECT DISTINCT A.AgrmntID, A.Status, JobSites.SiteName,
PurchaseOrderDetails.ExtCost
FROM Agreements A
Join JobSites J On J.CustSiteID = A.CustSiteID
OUTER APPLY(Select P.ExtCost From
PurchaseOrders PO
JOIN PurchaseOrderDetails POD ON POD.POID = PO.POID
Where PO.Description Like ('%', JobSites.SiteName, '%') And
Convert(varchar(8),PurchaseOrderDetails.TimeCreated,1) = '09/10/12') POD
WHERE A.Status = 2 AND POD.ExtCost IS NOT NULL
ORDER BY JobSites.SiteName