2016-04-14 7 views
1

ich Abfrage haben:Fehlende Wert nach kommen zwei Abfrage

select 
     coalesce(t1.L1, t4.L2) as L1, 
     coalesce(t1.L2, t4.L2) as L2, 
     coalesce(t1.S, t4.S) as S, 
     coalesce(t1.Q, t4.Q) as Q, 
     coalesce(t1.Value, 0) as Value, 
     coalesce(t4.Prev_Value, 0) as Prev_Value 
from (
    select L1, L2, S, Q, sum(value) as Value 
    from table1 
    group by L1, L2, S, Q 
) as t1 
left join 
(
    select L1, L2, S, Q, sum(value) as Prev_Value 
    from table1 
    group by L1, L2, S, Q 
) as t4 on 
t1.L1 = t4.L1 and 
t1.L2 = t4.L2 and 
t1.Q = cast((cast(left(t4.Q,4) as numeric) +1) as varchar)+right(t4.Q,2) and 
t1.S = t4.S 

ich jetzt habe zur Folge haben: enter image description here

Ich weiß, dass in FY2015Q1 ich Wert C nicht (für die Spalte S1) haben. Aber wie man überhaupt fehlenden Wert anzeigt? enter image description here

Ergebnis FULL OUTER JOIN: enter image description here

+0

'FULL JOIN' ändern ...? – Devart

+0

Ich versuchte volle Join, aber ich kam zu vielen Zeilen dann .... – 4est

+0

Ist die Zeile mit Q-Spalte 'FY2015Q1' und S-Spalte' C' in Tabelle1 vorhanden? – BeaglesEnd

Antwort

1

Verwenden Sie ein FULL OUTER JOIN, sondern umfassen eine WHERE-Klausel, die die Zeilen aus der Tabelle T4 beseitigt, die Sie nicht wollen, zu sehen.

+0

-> können Sie mir ein Beispiel mit WHERE geben ? – 4est

+0

Ich möchte alle Zeilen sehen: wenn Sie Filter FY2015Q1, SUM von Prev_Value machen, sollte gleich sein SUMME von Wert für FY2014Q1 – 4est

+0

Ich kann Ihre Daten nicht sehen. Bitte bearbeiten Sie Ihre Frage mit Beispielen für Ergebnisse eines vollständigen äußeren Joins, und welche Zeilen Sie herausfiltern möchten und warum. –

0

auch

t1.Q = cast((cast(left(t4.Q,4) as numeric) +1) as varchar)+right(t4.Q,2) 

zu

t1.Q = 'FY'+cast((cast(substring(t4.Q,3,6) as numeric) +1) as varchar)+right(t4.Q,2)