これは私が注文に関する情報を格納するテーブルを持っているIBMIシリーズ7SQLステートメントは、前の行のステータス=「C」AS400
のSQL上で実行されている行を選択します。各行には、注文番号(ON)、部品番号(PN)、およびシーケンス番号(SEQ)があります。各ONには複数のPNがリンクされ、各部品番号には複数のSEQ番号があります。各シーケンス番号は、部品の作業を行う順序を表します。部品がある場所にあり、作業準備が整ったら、システム内のどこか他の場所にフラグが表示されます。私がしたいのは、まだ到着していないが、前の場所で閉じられている場所の注文のリストを取得することです(つまり、その部分はその通りです)。
私は以下のエラーが表示されますが、次のエラーが表示されます。 "列の修飾子またはテーブルが未定義です"。私の問題はどこにありますか? Cluttonの回答は、わずかな変更で働いていたこの問題で他の誰のための
Select * From (SELECT M2ON as Order__Number , M2SEQ as Sequence__Number,
M2PN as Product__Number,ML2OQ as Order__Quantity
FROM M2P
WHERE M2pN in (select R1PN FROM R1P WHERE (RTWC = '7411') AND (R1SEQ = M2SEQ)
)
AND M2ON IN (SELECT M1ON FROM M1P WHERE ML1RCF = '')
ORDER BY ML2OSM ASC) as T
WHERE
T.Order__Number in (Select t3.m2on from (SELECT *
FROM(Select * from m2p
where m2on = t.Order__Number and m2pn = t.Product__Number
order by m2seq asc fetch first 2 rows only
)as t1 order by m2seq asc fetch first row only
) as t3 where t3.m2stat = 'C')
編集 - 回答は非常に高速応答のために彼に感謝します!私は外側のテーブルに名前をつけて、サブクエリでas400がキックバックしてカラムを見つけることができないと指定する必要がありました。私はまた、シーケンス番号が降順になるように注文しなければなりませんでした。そうでなければ、例えばシーケンス番号が20だった場合は、10が利用可能であっても最初に表示する必要がありました。私が今使っサブクエリ。M2P T1として実際のクエリの名前に注意してください。
IFNULL((
SELECT
M2STAT
FROM
M2P as M2P_1
WHERE
M2ON = T1.M2ON
AND M2SEQ < T1.M2SEQ
AND M2PN IN (select R1PN FROM R1P WHERE (RTWC = @WC) AND (R1SEQ = T1.M2SEQ))
ORDER BY M2SEQ DESC
FETCH FIRST ROW ONLY
), 'NULL') as PRIOR_M2STAT
すべてのサブクエリを使用せずに書き込むことはできますか? –