2016-11-08 3 views
-1

Ich habe eine Tabelle @ rpt_year_month, die die letzten 6 Monate in YYYYMM Form enthält und nichts anderes (es gibt andere Informationen, aber es ist auf Zeilen mit diesen 6 Monaten begrenzt; 6 Gesamtzeilen). Ich versuche, es mit einer Tabelle zu verbinden, die Informationen Monat für Monat segmentiert hat, jedoch einige "Materialien" haben keine Daten für einige der Monate. Ich habe ein Beispiel dafür, was ich den Zug wollen wie unten für ein bestimmtes Material zu suchen:Include NULL in Join (bereits mit linken Join)

Correct Material Pull

Allerdings, wenn ich es für etwas anderes laufen, als auf einem bestimmten Material Beitritt (wie Sie sehen werden in meinem Code) gibt es keine Nullen zurück. Gibt es eine Möglichkeit, die obigen Ergebnisse zu reproduzieren, so dass jedes Material auf diese Weise angezeigt wird? Mein Code ist unten:

With picard as (
Select c.client 
,COALESCE(c.fiscal_year_month_key,r.cal_year_month) as cal_year_month 
,c.material_nbr 
,c.plant 
,c.stock_qty 
,c.stock_value from @rpt_year_month r 

LEFT JOIN 

@cmbnd_inv_period_qty c ON 

r.cal_year_month = c.fiscal_year_month_key 
AND material_nbr = '100000009428' 
) 
Select * into #worf from picard; 

Select * from #worf 
Drop Table #worf; 

Antwort

0

Sie müssen alle Zeilen erzeugen und dann eine left join verwenden. Also, ich denke, das ist, was Sie wollen:

+0

Dies half mir zu bekommen, was ich tun musste, obwohl ich am Ende einige Temp Tabellen zusammen mit dem Cross Join verwendet. Vielen Dank! – Moomba44