2017-01-23 9 views
0

私のデータは、このようになります。 私はJOIN状態に言えば:列の値に基づいて

` LEFT OUTER JOIN Catalytic_vw_AggregateScheduleUniqueGUID agg ON agg.QuoteGuid = dbo.tblQuotes.QuoteGUID AND agg.guid = CL.CompanylocationGUID 
      AND agg.policyNumber IS NOT NULL 

それから私はPolicyNumberFromRater列にNULL値は表示されません。 しかし、私は特定のLineGUIDのためだけにNULLを見たいとは思っていません。

基本的に私は言いたい:そのつもりは他のLineGUIDことならば、私はPolicyNumberFromRater `でNULLを見たいんだけLineGUID = CF144437... の条件AND agg.policyNumber IS NOT NULLを使用しかし。

テーブルを一緒に結合しているときに、どうすればいいですか?

LineGUIDを含む表はtbl.Quotesであり、JOINにもあります。あなただけの、すなわちすべての列が、その後、1つまたは複数のレコードがNULLを有していてもよくPolicyNumberFromRaterを除き、重複しているレコードを扱う、あなたが説明した状況に対処したい場合はここで

JOIN

select PolicyNumber 
    FROM  tblFin_Invoices INV 
        INNER JOIN dbo.tblQuotes ON INV.QuoteID = tblQuotes.QuoteID 
        INNER JOIN tblFin_InvoiceDetails INVD ON INV.InvoiceNum = INVD.InvoiceNum 
        INNER JOIN dbo.tblQuoteDetails ON dbo.tblQuotes.QuoteGUID = dbo.tblQuoteDetails.QuoteGuid AND tblQuoteDetails.CompanyLineGuid = CF144437-F128-4B77-AC19-877247347D02 
INVD.CompanyLineGuid  
        LEFT OUTER JOIN dbo.tblCompanyLines ON dbo.tblQuoteDetails.CompanyLineGuid = dbo.tblCompanyLines.CompanyLineGUID 
        LEFT OUTER JOIN dbo.tblCompanyLocations AS CL ON dbo.tblCompanyLines.CompanyLocationGUID = CL.CompanyLocationGUID 
       LEFT OUTER JOIN tblCompanyLocations ON tblQuotes.CompanyLocationGuid = tblCompanyLocations.CompanyLocationGUID 
    ---------/*This is where I need the condition*/ 
       LEFT OUTER JOIN Catalytic_vw_AggregateScheduleUniqueGUID agg ON agg.QuoteGuid = dbo.tblQuotes.QuoteGUID AND agg.guid = CL.CompanylocationGUID 
       AND agg.policyNumber IS NOT NULL 
    --(use "AND agg.policyNumber IS NOT NULL" only for LineGUID = CF144437...)  
        LEFT OUTER JOIN   tblSubmissionGroup ON tblQuotes.SubmissionGroupGuid = tblSubmissionGroup.SubmissionGroupGUID 
        LEFT OUTER JOIN   tblUsers ON INV.UnderwriterUserGUID = tblUsers.UserGUID 
        LEFT OUTER JOIN   tblClientOffices ON tblQuotes.QuotingLocationGuid = tblClientOffices.OfficeGUID 
     LEFT OUTER JOIN tblInsureds ON tblSubmissionGroup.InsuredGuid = tblInsureds.InsuredGuid 
     LEFT OUTER JOIN lstPolicyTypes ON tblQuotes.PolicyTypeID = lstPolicyTypes.PolicyTypeID 

答えて

1

LineGUIDが、他の値とAgであるときは、このようにしてみてくださいことができますg.policyNumber isnull、条件は '' = '*'(真)になります

LEFT OUTER JOIN Catalytic_vw_AggregateScheduleUniqueGUID agg ON agg.QuoteGuid = dbo.tblQuotes.QuoteGUID AND agg.guid = CL.CompanylocationGUID 
      AND ISNULL(agg.policyNumber,'')!=CASE WHEN LineGUID = 'CF144437...' THEN '' ELSE '*' END 
+0

ありがとうございます。いい案。 – Oleg

2

私の完了します私はあなたがGROUP BYを使用して、これらのNULL値をわずかの距離に集約することができると思う:

SELECT MAX(PolicyNumberFromRater) AS PolicyNumberFromRater, 
     LineGUID, 
     Premium, 
     Carrier, 
     -- other columns 
FROM tblFin_Invoices INV 
INNER JOIN dbo.tblQuotes 
    ON INV.QuoteID = tblQuotes.QuoteID 
-- other joins 
GROUP BY LineGUID, 
     Premium, 
     Carrier, 
     -- all other columns in SELECT except for PolicyNumberFromRater 
+0

ありがとうございます。できます。 – Oleg

関連する問題