Home » SQL & PL/SQL » SQL & PL/SQL » repeat the previous value to next rows (oracle 11g)
repeat the previous value to next rows [message #646659] Wed, 06 January 2016 11:15 Go to next message
guddu_12
Messages: 227
Registered: April 2012
Location: UK
Senior Member
Dear Gurus,

I have a table where a can be null, if the null is encouted then it has to take previous non null value.

CREATE TABLE DS_TRAIN_LOGS.TEST
(
  UNIT_ID     VARCHAR2(250 BYTE),
  EVENT_DATE  DATE,
  DISTANCE    NUMBER
)


sample data as below, here the distance column are having null in forst 5 rows so it is fine , on sixth row the value is 5 and there onwards i want to populate 5 until non null value is encouter.
UNIT_ID EVENT_DATE DISTANCE

259 24/07/2007 13:55
331 26/04/2015 21:50
331 26/04/2015 21:50
259 26/05/2015 16:11
259 28/05/2015 08:42
259 28/05/2015 10:56 5
259 28/05/2015 10:58
259 28/05/2015 10:59
259 28/05/2015 10:59
259 28/05/2015 17:18
259 30/05/2015 02:25
259 30/05/2015 23:09
259 01/06/2015 20:47
259 01/06/2015 20:51
259 02/06/2015 13:17
331 03/06/2015 20:31 11
331 04/06/2015 01:54
259 06/06/2015 01:41
259 06/06/2015 01:41
259 06/06/2015 02:28
259 06/06/2015 02:28 6
259 06/06/2015 02:33
259 06/06/2015 10:10

expected result as below

UNIT_ID EVENT_DATE DISTANCE

259 24/07/2007 13:55
331 26/04/2015 21:50
331 26/04/2015 21:50
259 26/05/2015 16:11
259 28/05/2015 08:42
259 28/05/2015 10:56 5
259 28/05/2015 10:58 5
259 28/05/2015 10:59 5
259 28/05/2015 10:59 5
259 28/05/2015 17:18 5
259 30/05/2015 02:25 5
259 30/05/2015 23:09 5
259 01/06/2015 20:47 5
259 01/06/2015 20:51 5
259 02/06/2015 13:17 5
331 03/06/2015 20:31 11
331 04/06/2015 01:54 11
259 06/06/2015 01:41 11
259 06/06/2015 01:41 11
259 06/06/2015 02:28 11
259 06/06/2015 02:28 6
259 06/06/2015 02:33 6
259 06/06/2015 10:10 6

Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/24/2015 14:27:52', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/24/2015 14:33:37', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/25/2015 16:29:24', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/25/2015 15:18:33', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/25/2015 16:29:23', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('05/28/2015 08:42:48', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE, DISTANCE)
 Values
   ('259', TO_DATE('05/28/2015 10:56:10', 'MM/DD/YYYY HH24:MI:SS'), 5);
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('05/28/2015 10:59:13', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/02/2015 13:17:29', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE, DISTANCE)
 Values
   ('259', TO_DATE('06/17/2015 13:28:02', 'MM/DD/YYYY HH24:MI:SS'), 7);
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/18/2015 15:54:25', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('06/23/2015 17:20:41', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE, DISTANCE)
 Values
   ('259', TO_DATE('06/27/2015 01:05:06', 'MM/DD/YYYY HH24:MI:SS'), 3);
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE, DISTANCE)
 Values
   ('259', TO_DATE('06/27/2015 01:05:21', 'MM/DD/YYYY HH24:MI:SS'), 6);
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('07/13/2015 12:46:08', 'MM/DD/YYYY HH24:MI:SS'));
Insert into DS_TRAIN_LOGS.TEST
   (UNIT_ID, EVENT_DATE)
 Values
   ('259', TO_DATE('07/13/2015 17:45:36', 'MM/DD/YYYY HH24:MI:SS'));


Re: repeat the previous value to next rows [message #646662 is a reply to message #646659] Wed, 06 January 2016 12:20 Go to previous message
Michel Cadot
Messages: 68645
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator

Have a look at LAST_VALUE function.

Previous Topic: NVL Function
Next Topic: Interesting problem with query
Goto Forum:
  


Current Time: Thu Apr 25 04:24:47 CDT 2024