私は SQL に比較的慣れていません - 先週から SQL を使い始めたばかりです。連結ベースのインデックスで2つのテーブルを結合するのに問題があります(これはできますが、いくつかの日付が表示されます)、最大日付でフィルタリングします
一緒に結合されたテーブルを示す最初のバージョンについては、以下を参照してください。参加する必要があるテーブルが 2 つあります。INVENTORY_TRANSACTION_HIST2 (ジョブ) inventory_transaction_hist (アイテムの詳細に関連する詳細)
これらのテーブル間には関連がないため、いくつかのフィールドから連結されたものを作成する必要がありました:
part_no||lot_batch_no||serial_no||location_no
は、2 つのテーブルを関連付けるためのものです。
order_no||release_no||sequence_no||line_item_no
2 番目のテーブルのみに関連し、日付をフィルタリングするために必要なインデックスを作成します
select
to_char(job.dated,'dd/mm/yyyy hh:mm:ss') date_issued,
job.userid,
job.part_no,
job.quantity,
job.lot_batch_no,
job.serial_no,
job.cost,
job.quantity* job.cost total_cost,
job.source note,
hist.dated,
hist.order_no,
hist.release_no,
hist.sequence_no,
hist.line_item_no
from
inventory_transaction_job job
left join inventory_transaction_hist hist
on job.part_no||job.lot_batch_no||job.serial_no||job.location_no = hist.part_no||hist.lot_batch_no||hist.serial_no||hist.location_no
where (job.source like UPPER('%'||'&Job_No'||'%') or job.source like LOWER('%'||'&Job_No'||'%'))
and hist.transaction LIKE '%INM-IN%'
and hist.direction LIKE '+'
order by job.part_no
これを履歴の最新の日付でさらに分割する必要があります。テーブル (一部のバッチ/シリアル番号は「*」として表示されるため、それぞれに対して複数の注文番号を表示できます。これらの最新の注文のみを表示したい)
以下と他のいくつかのバリエーションを試しましたが、うまくいかないようです。
select
to_char(job.dated,'dd/mm/yyyy hh:mm:ss') date_issued,
job.userid user_id,
job.part_no,
job.quantity,
job.lot_batch_no,
job.serial_no,
job.cost,
job.quantity* job.cost total_cost,
job.source note,
hist.dated,
hist.order_no,
hist.release_no,
hist.sequence_no,
hist.line_item_no
from
inventory_transaction_job job
left join inventory_transaction_hist hist
on job.part_no||job.lot_batch_no||job.serial_no||job.location_no = hist.part_no||hist.lot_batch_no||hist.serial_no||hist.location_no
where (job.source like UPPER('%'||'&Job_No'||'%') or job.source like LOWER('%'||'&Job_No'||'%'))
and hist.transaction LIKE '%INM-IN%'
and hist.direction LIKE '+'
and job.order_no||job.sequence_no||job.line_item_no IN
(SELECT
hist2.order_no||hist2.sequence_no||hist2.line_item_no
FROM inventory_transaction_hist hist2
WHERE job.part_no||job.lot_batch_no||job.serial_no||job.location_no LIKE hist2.part_no||hist2.lot_batch_no||hist2.serial_no||hist2.location_no
ORDER BY hist2.Dated DESC LIMIT 1)
どんな助けでも大歓迎です。