Crystal Reports に渡されたこの SQL がありますが、「PAL」行は返されません。元の Query/400 は非常に単純です。
これは、ICLOCMLM と ICBLDTIR の間で一致する Join です。これらに参加: (Join 1 or Join 2 same issue)
T01.LMLOC1 EQ T02.IRLOC1
T01.LMLOC2 EQ T02.IRLOC2
T01.LMLOC3 EQ T02.IRLOC3
レコードを選択: T01.LMLTPC LIST 'PAL' 'RAK'
並べ替え:
rty A/D Field
10 A T01.LMLOC1
20 A T01.LMLOC2
30 A T01.LMLOC3
出力ファイルを作成します: BLDPALQ オプション 1 を置き換えます。
次に、BAL ファイルが追加された後にこのファイルが追加され、必要なレコードが提供されますが、この SQL では何らかの理由で PAL レコードが追加されません。RAK のみ。IOW、Query/400、およびその CPYF は必要なことを実行していますが、この SQL は実行していません。
CPYF FROMFILE(ASTDTA/ICBALMIE) +
TOFILE(ASTCCDTA/ACBALMPK) +
MBROPT(*REPLACE) FMTOPT(*MAP *DROP)
MONMSG CPF0000
*/
CPYF FROMFILE(TEMPLIB/BLDPALQ) +
TOFILE(ASTCCDTA/ACBALMPK) +
MBROPT(*ADD) FMTOPT(*MAP *DROP)
MONMSG CPF0000
SELECT
LMLTPC,
COALESCE(IRLOC1,'') as IRLOC1,
COALESCE(IRLOC2,'') as IRLOC2,
COALESCE(IRLOC3,'') as IRLOC3,
IRPRT#,
IRQOH#,
IRWHS#,
'' as IEPRT#,
'.00' as IEQOH#,
'' as IELOC1,
'' as IELOC2,
'' as IELOC3,
'' as IEWHS#
FROM ASTDTA.ICLOCMLM mlm
left join ASTDTA.ICBLDTIR tir
on mlm.LMLOC1 = tir.IRLOC1
and mlm.LMLOC2 = tir.IRLOC2
and mlm.LMLOC3 = tir.IRLOC3
where LMLTPC in ('PAL', 'RAK')
UNION ALL
SELECT
' ' as LMLTPC,
' ' as IRLOC1,
' ' as IRLOC2,
' ' as IRLOC3,
'' as IRPRT#,
'.00' as IRQOH#,
'' as IRWHS#,
IEPRT#,
IEQOH#,
IELOC1,
IELOC2,
IELOC3,
IEWHS#
FROM ASTDTA.ICBALMIE
このクエリを 400 で実行すると奇妙なことに、PAL レコードを取得するので、結合に何かがあるに違いありません。
SELECT ALL
T01.LMCOM#,
T01.LMWHS#,
T01.LMLOC1,
T01.LMLOC2,
T01.LMLOC3,
T01.LMLTPC,
T01.LMLCT1,
T01.LMLCT2,
T01.LMRIDC,
T01.LMQTM#,
T01.LMQMX#,
T01.LMWGHT,
T01.LMACTF
FROM ASTDTA/ICLOC1 T01
WHERE t01.LMLTPC = 'PAL'
私は完全に参加していますが、それでも機能しません:
SELECT
T01.LMLTPC,
T02.IRCOM#,
T02.IRWHS#,
T02.IRPRT#,
T02.IRUM,
T02.IRLOC1,
T02.IRLOC2,
T02.IRLOC3,
T02.IRLOT#,
T02.IRFL50,
T02.IREXPD,
T02.IRQOH#,
T02.IRQTM#,
T02.IRQMX#,
T02.IRLTPC,
T02.IRQCM#
FROM ASTDTA.ICLOC1 T01,
ASTDTA.ICBLD1 T02
WHERE T01.LMLOC1 = T02.IRLOC1
AND T01.LMLOC2 = T02.IRLOC2
AND T01.LMLOC3 = T02.IRLOC3
ORDER BY T01.LMLOC1 ASC, T01.LMLOC2 ASC, T01.LMLOC3 ASC