私の Oracle DB には、親の作業指示書からその子の作業指示書への左外部結合があります。次に、いくつかの子の値の SUM() を実行する計算を実行します。子作業指示書の結果を Nvl() でラップして、正しく計算されるようにします。
親の子作業指示書がない場合を除いて、これは機能します。この場合、表示中に返される「null」は、結合に結果がないためです。したがって、Nvl([fieldname],0) はそれらを 0 を表示するように変換していないように見えます。親の値を持つ子の値は、null 値に値を追加するため、null も返します。
これを回避する最善の方法は何ですか? これは回避できるものですか、それとも私のクエリに根本的に何か問題があるという匂いですか?
クエリ
申し訳ありませんが、現時点ではセットアップを投稿できません。この特定の作業順序 (ハードコーディング) では、親に子がないため、結合の「右側」の部分は空であり、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';