0

2 つのテーブルをまとめるサブクエリを作成しようとしていますが、何も得られません。

コード:

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 にリンクするものがないため、サブクエリを使用しています。

うまくいけば、これはあなたが私を助けるのに十分な情報です. 前もって感謝します!!

4

2 に答える 2

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'

そして、あなたが何を取り戻すかなどを見てください。

于 2012-10-31T22:21:08.860 に答える
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
于 2012-10-31T22:27:26.857 に答える