Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Query on 5 tables joining

rajasekhar_nSep 22 2020 — edited Sep 23 2020

Hi All,

Could you please help me to build a query. I have 5 tables and need to join and get result. please refer below tables and filter criteria. I am not expert in oracle query build.

Please help on the query.

CREATE TABLE OM_PORTFOLIO_GROUP

(

  PTFL_GROUP_ID   NUMBER(38)                    NOT NULL,

  BOOKING_CENTER  VARCHAR2(20 BYTE)             NOT NULL,

  NAME            VARCHAR2(300 BYTE),

  OPEN_DATE       DATE,

  REFERENCE       VARCHAR2(60 BYTE),

  CCY_CODE        VARCHAR2(20 BYTE),

  REPORT_DATE     DATE                          NOT NULL

);

PTFL_GROUP_ID BOOKING_CENTER NAME OPEN_DATE REFERENCE CCY_CODE REPORT_DATE

3002 JS 04/27/2016 00:00:00 AL:000034000 USD 08/31/2020 00:00:00

CREATE TABLE OM_PORTFOLIOS_MEMBERS

(

  PTFL_RL_SHIP_ID       NUMBER(38)              NOT NULL,

  PTFL_ID               NUMBER(38),

  PTFL_GROUP_ID         NUMBER(38)              NOT NULL,

  BOOKING_CENTER        VARCHAR2(20 BYTE)       NOT NULL,

  PTFL_NUMBER           VARCHAR2(120 BYTE),

  OPEN_DATE             DATE,

  REFERENCE             VARCHAR2(60 BYTE)       NOT NULL,

  PTFL_GROUP_REFERENCE  VARCHAR2(60 BYTE)       NOT NULL

);

PTFL_RL_SHIP_ID PTFL_ID PTFL_GROUP_ID BOOKING_CENTER PTFL_NUMBER OPEN_DATE REFERENCE PTFL_GROUP_REFERENCE

100 200 3002 JS 210008080006 09/01/2016 00:00:00 00210008080006 AL:000034000

102 202 3002 JS 210008080006 09/01/2016 00:00:00 00210008080006 AL:000034000

#Query1

SELECT PG.PTFL_GROUP_ID,PG.OPEN_DATE,PG.REFERENCE,REPORT_DATE,PG.BOOKING_CENTER,PM.PTFL_NUMBER

FROM OM_PORTFOLIO_GROUP PG LEFT JOIN   OM_PORTFOLIOS_MEMBERS PM

ON  PG.PTFL_GROUP_ID = PM.PTFL_GROUP_ID

AND REPORT_DATE=TO_DATE('08/31/2019', 'mm/dd/yyyy') AND PG.BOOKING_CENTER='JS')

CREATE TABLE OR_ACCOUNT

(

  ACNODESC            VARCHAR2(12 BYTE)        NOT NULL,

  ACNO            VARCHAR2(12 BYTE)        NOT NULL,

  ACID                 NUMBER(10)               NOT NULL

)

CREATE TABLE OR_ACCOUNT

(

  ACNODESC            VARCHAR2(12 BYTE)        NOT NULL,

  ACNO            VARCHAR2(12 BYTE)        NOT NULL,

  ACID                 NUMBER(10)               NOT NULL

  Pftermdate         date

)

ACNODESC       ACNO      ACID       date

TEST 210008080006        5003    09/01/2016

CREATE TABLE OR_ACGROUP

(

  AGGROUPACID     NUMBER(10)                    NOT NULL,

  AGMEMACID       NUMBER(10)                    NOT NULL,

  AGIDATE         DATE                          NOT NULL

)

AGGROUPACID   AGMEMACID  AGIDATE

2002 5003 09/01/2016

CREATE TABLE OR_PARGROUP

(

  PGP_ID              NUMBER(10)                NOT NULL,

  PGP_DES           VARCHAR2(24 BYTE)         NOT NULL,

)

PGP_ID  PGP_DESC1

2002 AL:000034000

#Query2:

select   trim(OR_PARGROUP.PGP_DES) PGP_DES,

       trim(OR_ACCOUNT.ACNO) ACNO,

       OR_ACGROUP.agidate

  from OR_ACGROUP, OR_PARGROUP, OR_ACCOUNT

where OR_ACGROUP.AGGROUPACID = OR_PARGROUP.PGP_ID

   and OR_ACGROUP.AGEDATE >= sysdate

   and OR_ACGROUP.AGMEMACID = OR_ACCOUNT.acid(+)

   and to_date('3999-12-31', 'YYYY-MM-DD') = OR_ACCOUNT.Pftermdate(+)

1st set of tables

OM_PORTFOLIO_GROUP (group)

OM_PORTFOLIOS_MEMBERS (members or accounts)

2nd set of tables

OR_ACGROUP, OR_PARGROUP, OR_ACCOUNT

I need result with below filter conditions

1. Group record not exists in 2nd set

2. Member/account record not exists in 2nd set

3. Group record exists in 2nd set of tables and member not exists in 2nd

Result I am expectiong by matching above filter criteria.

Group records

Member/account records

Comments

Post Details

Added on Sep 22 2020
12 comments
372 views