How can I get previous or next product_id from table if I have only varchar to sort?
Example if I have PRODUCT_NO='20120033' and PRODUCT_REGISTRATION_NO='yellow', I would like to get the next record PRODUCT_ID which is 4 and I have PRODUCT_NO='20120033' and PRODUCT_REGISTRATION_NO='green', I would like to get the previous record PRODUCT_ID which is 3 How can I achieve this?
Thanks
Table structure and data are pasted below
CREATE TABLE MYTAB
(
PRODUCT_ID NUMBER,
PRODUCT_NO VARCHAR2(),
PRODUCT_REGISTRATION_NO VARCHAR2(32)
);
SET DEFINE OFF;
Insert into MYTAB
(PRODUCT_ID, PRODUCT_NO, PRODUCT_REGISTRATION_NO)
Values
(3, '20120033', 'yellow');
Insert into MYTAB
(PRODUCT_ID, PRODUCT_NO, PRODUCT_REGISTRATION_NO)
Values
(4, '20120033', 'green');
Insert into MYTAB
(PRODUCT_ID, PRODUCT_NO, PRODUCT_REGISTRATION_NO)
Values
(5, '20120034', 'wine');
Insert into MYTAB
(PRODUCT_ID, PRODUCT_NO, PRODUCT_REGISTRATION_NO)
Values
(6, '20120034', 'soda');
COMMIT;
Use the lag() and lead() functions:
Note that the concept of “previous” and “next” only makes sense if you can specify a condition to sort on. That’s what the
order by product_idin the window definition does.