Afficher les valeurs null qui ne correspondent pas à un autre server SQL de la table

J'ai deux table "Table A" et "Table B"

Le tableau A est le résultat des jointures avec d'autres tables. Et le tableau B est une table séparée avec 1 champ commun dans le tableau A.

Tableau A:

Year Name Value 2011 A Item1 2010 B 1 2011 C Item2 

Tableau B:

 id Value 1 Item1 2 Item2 3 Item3 4 Item4 

Je veux que le résultat soit comme:

 Year Name Value 2011 A Item1 2010 B NULL 2011 C Item2 

Mes efforts sont:

 SELECT d.Portfolio, d.Name, d.AccountName, d.CashGAAP, d.OriginalDate, d.Amount, d.AccountNumber, d.AtsortingbuteSetName, d.TheDate, d.Year, d.Value FROM (SELECT Portfolio.LegalEntityName AS Portfolio, Forecast.Name, CoA.AccountName, Forecast_Data.CashGAAP, CONVERT(DATE, Forecast_Data.TheDate) AS OriginalDate, SUM(Forecast_Data.Amount) AS Amount, CoA.AccountNumber , Atsortingbute_Set.AtsortingbuteSetName, '' + CONVERT(VARCHAR, YEAR(Forecast_Data.TheDate)) + '-' + CONVERT(VARCHAR, MONTH(Forecast_Data.TheDate)) + '-01' AS TheDate, YEAR(Forecast_Data.TheDate) AS Year, Forecast_Atsortingbute.Value FROM Portfolio INNER JOIN Forecast ON Portfolio.PortfolioID = Forecast.PortfolioID INNER JOIN Forecast_Account ON Forecast.ForecastID = Forecast_Account.ForecastID INNER JOIN Forecast_Data ON Forecast_Account.ForecastAccountID = Forecast_Data.ForecastAccountID INNER JOIN CoA ON CoA.AccountNumber = Forecast_Account.AccountNumber INNER JOIN Atsortingbute_Set ON CoA.AtsortingbuteSetID = Atsortingbute_Set.AtsortingbuteSetID INNER JOIN Forecast_Atsortingbute ON Forecast_Account.ForecastAccountID = Forecast_Atsortingbute.ForecastAccountID WHERE (Forecast.ForecastID = 5) OR (Forecast.ForecastID = 6) GROUP BY Portfolio.LegalEntityName, Forecast.Name, CoA.AccountName, Forecast_Data.CashGAAP, Forecast_Data.TheDate, CoA.AccountNumber, Atsortingbute_Set.AtsortingbuteSetName, Forecast_Atsortingbute.Value) AS d LEFT OUTER JOIN Vendor ON d.Value = Vendor.VendorName 

J'ai renommé les exemples de tables qui sont expliqués dans Question:

 Table A = d Table B = Vendor 

Vous B.Value B à l'A et afficher B.Value au lieu de A.Value dans la list SELECT:

 SELECT Year, Name, B.Value FROM A LEFT JOIN B on A.Value=B.Value 
 select A.Year, A.Name, B.Value from A left join B on A.Value= B.value; 

Le mot key INNER JOIN sélectionne toutes les lignes des deux tables tant qu'il existe une correspondance entre les colonnes des deux tables

Vous devez appliquer LEFT JOIN

 SELECT column_name(s) FROM TableA LEFT OUTER JOIN TableB ON tableA.Value=tableB.Value; 

Le mot key LEFT JOIN renvoie toutes les lignes de la table de gauche (tableA), avec les lignes correspondantes dans la table de droite (tableB). Le résultat est NULL dans le côté droit lorsqu'il n'y a pas de correspondance.