On Sep 12, 4:29 pm, JK <[email protected]> wrote:
> Thanks for the quick response. Actually, the above question was wrong.
> Sorry, I was having difficulty in coming up with the right question.
>
> I have changed the data for insert. Please see the insert statements
> below.
>
> Here is what I want to achieve.
>
> select mc_number from test
> for PART_A_OR_PART_B = 'A' the transaction_code should not be in (11,
> 41) and mbs_code should be in (30,31)
> and for PART_A_OR_PART_B = 'B'  transaction_code should be in (11, 41)
> and mbs_code should be in (01,02)
>
> CREATE TABLE MYUSER.TEST
> (
>   MC_NUMBER  VARCHAR2(4 BYTE),
>   PART_A_OR_PART_B       CHAR(1 BYTE),
>   TRANSACTION_CODE       NUMBER(3),
>   MBS_CODE               NUMBER(2)
> );
>
> INSERT INTO MYUSER.TEST (
>     MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE
>    )
> VALUES ( 2121,'A',12, 31 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 2121,   'B',    11,    01 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 1111,    'A',    11,    31 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 1111,    'B',    41,    01 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 2222,    'A',    28,    30 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 2222,    'B',    50,    02 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 3333,    'A',    28,    32 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 3333,    'B',    11,    02 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 4444,    'A',    28,    30 );
>
> INSERT INTO MYUSER.TEST (
>    MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE)
> VALUES ( 4444,    'B',    11,    04 );
>
> SELECT * FROM TEST
> ORDER BY MC_NUMBER,PART_A_OR_PART_B
>
> Thank you.

Your criteria can't be met the way you have your table defined as
NUMBER columns do not store leading 0's.  Changing your table
definition slightly (and your inserts to  match the column type):

SQL>
SQL> CREATE TABLE TEST
  2  (
  3    MC_NUMBER  VARCHAR2(4 BYTE),
  4    PART_A_OR_PART_B  CHAR(1 BYTE),
  5    TRANSACTION_CODE  NUMBER(3),
  6    MBS_CODE               VARCHAR2(2)
  7  );

Table created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2      MC_NUMBER, PART_A_OR_PART_B, TRANSACTION_CODE,MBS_CODE
  3     )
  4  VALUES ( 2121,'A',12, '31' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 2121,      'B',    11,    '01' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 1111,       'A',    11,    '31' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 1111,       'B',    41,    '01' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 2222,       'A',    28,    '30' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 2222,       'B',    50,    '02' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 3333,       'A',    28,    '32' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 3333,       'B',    11,    '02' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 4444,       'A',    28,    '30' );

1 row created.

SQL>
SQL>
SQL> INSERT INTO TEST (
  2             MC_NUMBER, PART_A_OR_PART_B,
TRANSACTION_CODE,MBS_CODE)
  3  VALUES ( 4444,       'B',    11,    '04' );

1 row created.

SQL>
SQL> COMMIT;

Commit complete.

SQL>
SQL> SELECT * FROM TEST
  2  ORDER BY MC_NUMBER,PART_A_OR_PART_B
  3
SQL>
SQL>
SQL> select MC_NUMBER , PART_A_OR_PART_B, TRANSACTION_CODE, MBS_CODE
  2  from TEST
  3  where (PART_A_OR_PART_B = 'A'
  4  and TRANSACTION_CODE not in (11, 41)
  5  and MBS_CODE in ('30','31') )
  6  or (PART_A_OR_PART_B = 'B'
  7  and TRANSACTION_CODE in ('11','41')
  8  and MBS_CODE in (01,02) )
  9  ORDER BY PART_A_OR_PART_B,MC_NUMBER;

MC_N P TRANSACTION_CODE MB
---- - ---------------- --
2121 A               12 31
2222 A               28 30
4444 A               28 30
1111 B               41 01
2121 B               11 01
3333 B               11 02

6 rows selected.

SQL>


David Fitzjarrell

-- 
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en

Reply via email to