Verknüpfungen: Wie die Rückkehr der Standardwerte für leere rechten Seite der left outer join
In meiner Oracle-DB habe ich ein left outer join für einen übergeordneten Arbeitsauftrags der untergeordneten Arbeitsaufträge. Ich dann eine Berechnung durchführen SUMME() von einigen der untergeordneten Werte. Ich wickle die Ergebnisse aus der untergeordneten Arbeitsaufträge in der Nvl (), um sicherzustellen, Sie werden korrekt berechnet.
Dies funktioniert, außer, wenn es gibt keine untergeordneten Arbeitsaufträge für die Eltern. In diesem Fall wird der "null" zurückgegeben wird während der Anzeige sind, weil es keine Ergebnisse in der Verknüpfung, und so scheint es, dass die Nvl([Feldname],0) nicht konvertieren, Ihnen zu zeigen, 0. Also, wenn ich denke, dass die Summe der untergeordneten Werte mit der parent-Werte auch null zurück, durch hinzufügen eines Werts zu einem null-Wert.
Was ist der beste Weg, dies zu umgehen? Ist das etwas umgangen werden kann, oder ist es ein Geruch, dass etwas falsch mit meiner Abfrage grundsätzlich?
Die Abfrage
Sorry, ich bin nicht in der Lage, ein setup für es im moment. Für diese spezifischen Arbeitsauftrags (hart-codiert), die "Rechte hand" Teil der join leer ist, weil die Eltern keine Kinder hat, und zeigt damit an, null.
SELECT *
FROM (SELECT *
FROM R_PCR_ALLWOSANDTASKSSEPARATELY)WOINFO
LEFT OUTER JOIN (SELECT WORKORDERNUMBER AS TASKWORKORDRENUMBER
, PARENT AS TASKPARENT
, NVL(TOTALMATESTCOSTFORWO, 0) AS TOTALMATESTCOSTFORWO_TASK
, NVL(TOTALLABESTCOSTFORWO,0) AS TOTALLABESTCOSTFORWO_TASK
, NVL(TOTALMATACTCOSTFORWO,0) AS TOTALMATACTCOSTFORWO_TASK
, NVL(TOTALLABACTCOSTFORWO,0) AS TOTALLABACTCOSTFORWO_TASK
, NVL(TOTALLABACTHOURSFORWO,0) AS TOTALLABACTHOURSFORWO_TASK
FROM R_PCR_ALLWOSANDTASKSSEPARATELY)TASKINFO
ON ( WOINFO.WORKORDERNUMBER = TASKINFO.TASKPARENT )
WHERE WORKORDERNUMBER = '2826059';
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bewerben Sie sich NVL nach der die Ergebnisse zurückgegeben werden, die von LEFT join.
Versuchen Sie dies: