S
shar
Please help rewriting the following SQL query for MS Access.
Thank you.
SELECT
O.ONE_ID,
O.TWO_ID,
O.THREE_ID,
O.SEQ_NO,
O.STAT,
O.RES_ID,
MIN(O2.SEQ_NO) N_OP,
MAX(O3.SEQ_NO) P_OP
FROM OP O,OP O2,OP O3
WHERE O.TYPE='X'
AND O.ONE_ID='32558'
AND O.TWO_ID='1'
AND O.TYPE=O2.WK_TYPE(+)
AND O.ONE_ID=O2.ONE_ID(+)
AND O.TWO_ID=O2.TWO_ID(+)
AND O.THREE_ID=O2.THREE_ID(+)
AND O.FOUR_ID=O2.FOUR_ID(+)
AND O.SEQ_NO<O2.SEQ_NO(+)
AND O.TYPE=O3.TYPE(+)
AND O.ONE_ID=O3.ONE_ID(+)
AND O.TWO_ID=O3.TWO_ID(+)
AND O.THREE_ID=O3.THREE_ID(+)
AND O.FOUR_ID=O3.FOUR_ID(+)
AND O.SEQ_NO>O3.SEQ_NO(+)
GROUP BY O.ONE_ID, O.TWO_ID, O.FOUR_ID, O.SEQ_NO, O.STAT, O.RES_ID
ORDER BY O.ONE_ID, TO_NUMBER(O.TWO_ID), O.FOUR_ID, O.SEQ_NO;
OUTPUT LOOKS LIKE:
ONE_ID TWO_ID THREE_ID SEQ_NO STAT RES_ID N_OP P_OP
32558 1 0 10 C S38 20
32558 1 0 20 C GRD 30 10
32558 1 0 30 C P01 50 20
32558 1 0 50 C M01 70 30
32558 1 0 70 C M01 80 50
32558 1 0 80 C E01 90 70
32558 1 0 90 C HT6 100 80
32558 1 0 100 C HT64 105 90
32558 1 0 105 C OST 110 100
32558 1 0 110 C INS 120 105
32558 1 0 120 C OSM 130 110
32558 1 0 130 C INS 140 120
32558 1 0 140 C INS 150 130
32558 1 0 150 C INS 160 140
32558 1 0 160 C INS 150
DATA TABLE LOOKS LIKE:
32558 1 0 10 C S38
32558 1 0 20 C GRD
32558 1 0 30 C P01
32558 1 0 50 C M01
32558 1 0 70 C M01
32558 1 0 80 C E01
32558 1 0 90 C HT6
32558 1 0 100 C HT64
32558 1 0 105 C OST
32558 1 0 110 C INS
32558 1 0 120 C OSM
32558 1 0 130 C INS
32558 1 0 140 C INS
32558 1 0 150 C INS
32558 1 0 160 C INS
Thank you.
SELECT
O.ONE_ID,
O.TWO_ID,
O.THREE_ID,
O.SEQ_NO,
O.STAT,
O.RES_ID,
MIN(O2.SEQ_NO) N_OP,
MAX(O3.SEQ_NO) P_OP
FROM OP O,OP O2,OP O3
WHERE O.TYPE='X'
AND O.ONE_ID='32558'
AND O.TWO_ID='1'
AND O.TYPE=O2.WK_TYPE(+)
AND O.ONE_ID=O2.ONE_ID(+)
AND O.TWO_ID=O2.TWO_ID(+)
AND O.THREE_ID=O2.THREE_ID(+)
AND O.FOUR_ID=O2.FOUR_ID(+)
AND O.SEQ_NO<O2.SEQ_NO(+)
AND O.TYPE=O3.TYPE(+)
AND O.ONE_ID=O3.ONE_ID(+)
AND O.TWO_ID=O3.TWO_ID(+)
AND O.THREE_ID=O3.THREE_ID(+)
AND O.FOUR_ID=O3.FOUR_ID(+)
AND O.SEQ_NO>O3.SEQ_NO(+)
GROUP BY O.ONE_ID, O.TWO_ID, O.FOUR_ID, O.SEQ_NO, O.STAT, O.RES_ID
ORDER BY O.ONE_ID, TO_NUMBER(O.TWO_ID), O.FOUR_ID, O.SEQ_NO;
OUTPUT LOOKS LIKE:
ONE_ID TWO_ID THREE_ID SEQ_NO STAT RES_ID N_OP P_OP
32558 1 0 10 C S38 20
32558 1 0 20 C GRD 30 10
32558 1 0 30 C P01 50 20
32558 1 0 50 C M01 70 30
32558 1 0 70 C M01 80 50
32558 1 0 80 C E01 90 70
32558 1 0 90 C HT6 100 80
32558 1 0 100 C HT64 105 90
32558 1 0 105 C OST 110 100
32558 1 0 110 C INS 120 105
32558 1 0 120 C OSM 130 110
32558 1 0 130 C INS 140 120
32558 1 0 140 C INS 150 130
32558 1 0 150 C INS 160 140
32558 1 0 160 C INS 150
DATA TABLE LOOKS LIKE:
32558 1 0 10 C S38
32558 1 0 20 C GRD
32558 1 0 30 C P01
32558 1 0 50 C M01
32558 1 0 70 C M01
32558 1 0 80 C E01
32558 1 0 90 C HT6
32558 1 0 100 C HT64
32558 1 0 105 C OST
32558 1 0 110 C INS
32558 1 0 120 C OSM
32558 1 0 130 C INS
32558 1 0 140 C INS
32558 1 0 150 C INS
32558 1 0 160 C INS