0

結果を制限しようとすると、制限しすぎます。

Select Distinct Agreements.AgrmntID, Agreements.Status, JobSites.SiteName,
  AgreementCharges.TotalSaleAmt, AgreementCharges.PartID,
  AgreementSchedules.FormanEmpID, LaborCodeTypes.RepairCode
From Agreements Inner Join
  AgreementCharges On Agreements.AgrmntID = AgreementCharges.AgrmntID Inner Join
  JobSites On JobSites.CustSiteID = Agreements.CustSiteID Left Outer Join
  AgreementSchedules On Agreements.AgrmntID = AgreementSchedules.AgrmntID
  Left Outer Join
  LaborCodeTypes On LaborCodeTypes.RepairID = AgreementSchedules.RepairID
Where Agreements.Status = 2 And AgreementCharges.PartID = 31 And
  LaborCodeTypes.RepairCode = '04 - LS'

'04 --LS'に一致するRepairCodeがない場合でも、AgrmntIDとTotalSaleAmtが必要です。同様に、AgreementScheduleがまったくない場合は、AgrmntIDとTotalSaleAmtが必要です。

出力:

AgrmntID  Status  SiteName  TotalSaleAmt  PartID  FormanEmpID  RepairCode
-------------------------------------------------------------------------
2         2       TEST01    $100.00       31      66           04 - LS
2         2       TEST03    $300.00       31      21           04 - LS

期待される出力:

AgrmntID  Status  SiteName  TotalSaleAmt  PartID  FormanEmpID  RepairCode
-------------------------------------------------------------------------
2         2       TEST01    $100.00       31      66           04 - LS
2         2       TEST02    $200.00       31
2         2       TEST03    $300.00       31      21           04 - LS

私は見て、見て、そして今ここに助けを求めて来ています。前もって感謝します!!

4

2 に答える 2

0

私のバージョン:

Select Distinct 
    Agreements.AgrmntID, 
    Agreements.Status, 
    JobSites.SiteName,
    AgreementCharges.TotalSaleAmt, 
    AgreementCharges.PartID,
    AgreementSchedules.FormanEmpID, 
    LaborCodeTypes.RepairCode
From Agreements
Inner Join JobSites On 
    JobSites.CustSiteID = Agreements.CustSiteID
Left Join AgreementCharges On 
    Agreements.AgrmntID = AgreementCharges.AgrmntID 
Left Join AgreementSchedules On 
    Agreements.AgrmntID = AgreementSchedules.AgrmntID
Left Join LaborCodeTypes On 
    LaborCodeTypes.RepairID = AgreementSchedules.RepairID
Where 
    Agreements.Status = 2 
    AND AgreementCharges.PartID = 31
    AND coalesce(LaborCodeTypes.RepairCode, '04 - LS') = '04 - LS'

PS次回は、他の人に表示する場合は、クエリをより適切にフォーマットします:)

于 2012-11-08T08:55:16.820 に答える
0

これが最終的に機能したものです。

Select Distinct Agreements.AgrmntID, Agreements.Status, JobSites.SiteName,
  AgreementCharges.TotalSaleAmt, AgreementCharges.PartID, a.FormanEmpID,
  a.RepairCode
From Agreements Inner Join
  JobSites On JobSites.CustSiteID = Agreements.CustSiteID Left Join
  AgreementCharges On Agreements.AgrmntID = AgreementCharges.AgrmntID Left Join
  (Select AgreementSchedules.AgrmntID, AgreementSchedules.FormanEmpID,
      b.RepairCode
    From AgreementSchedules Inner Join
      (Select LaborCodeTypes.RepairCode, LaborCodeTypes.RepairID
        From LaborCodeTypes) b On AgreementSchedules.RepairID = b.RepairID
    Where b.RepairCode = '04 - LS') a On Agreements.AgrmntID = a.AgrmntID
Where Agreements.Status = 2 And AgreementCharges.PartID = 31

pkuderovさん、どうもありがとうございました。あなたの返事は私を正しい方向に向け続けました。そして、あなたがあなたの応答を削除したとしても、あなたはキウイリチャードだと思います。

于 2012-11-16T04:45:48.477 に答える