私はSQLに比較的慣れていません。興味のある結果を得るには、Oracleクエリで複数のサブ選択が必要だと思いますが、クエリを正しく機能させることができませんでした。
「Customer」テーブルからベースデータをプルし、2番目のテーブル「Customer_Issue」から追加データをプルする必要があります。必要な他のフィールドを含む追加のテーブルがありますが、「顧客」テーブルへの結合を通じてそのデータを正常に結合/選択しました
「Customer_Issue」から必要なデータは、「Service」、「Service_Issue」、および「ServiceVersion」の各フィールドにあります。サービスごとに複数のサービスの問題があり、サービスの問題ごとに複数のサービスバージョンがあります。
サービスごとに、最大サービス問題のみを選択する必要があり、選択したサービス問題については、最大サービスバージョンのみを選択する必要があります。
副選択により、次のように最大サービスの問題を選択することができました。
Select c.customer_id, ci.service, ci.service_issue
from customer c
left outer join CUSTOMER_issue ci on c.CUSTOMER_ID = ci.CUSTOMER_ID
join (select CUSTOMER_ID, service, max(service_ISSUE) as service_ISSUE
from CUSTOMER_issue
group by CUSTOMER_ID, service) ci1
on ci1.CUSTOMER_ID = ci.CUSTOMER_ID and ci1.service = ci.service
and ci1.service_issue = ci.service_issue
ただし、最大サービスバージョンを取得するために、後続のサブ選択を機能させることができません。これが私が試したことです(クエリでは、上記のコードのすぐ下にあります)
join (select CUSTOMER_ID, service, service_ISSUE, max (service_VERSION) as service_VERSION
from CUSTOMER_issue
group by CUSTOMER_ID, service, service_ISSUE) ci2
on ci1.CUSTOMER_ID = ci2.CUSTOMER_ID and ci1.service = ci2.service and
ci1.service_ISSUE = ci2.service_ISSUE and ci1.service_VERSION = ci2.service_VERSION