Here i would like to understand what exactly does this SQL Query do. It gives me an output like the one i have attached below. 

```
case when admit_disch is null then
   MAX(admit_disch) OVER 
    (PARTITION BY source.cono,source.resno ORDER BY source.date ASC ROWS UNBOUNDED PRECEDING) 
else 
   admit_disch 
end as admit_disch

```

```
cono    resno   date    enddate unit    room    bed admit_disch in_out
02  322359  2015-03-16 00:00:00.000 2019-09-03 06:59:12.363 W   709 P   D   O
02  322359  2015-03-08 00:00:00.000 2015-03-15 00:00:00.000 W   709 P   R   I
02  322359  2015-02-20 00:00:00.000 2015-03-07 00:00:00.000 W   709 P   R   I
02  322359  2015-02-06 00:00:00.000 2015-02-19 00:00:00.000 W   709 P   R   I

```

When i do not use any any case function and directly call onto that particular column, it gives me output like this:

```
Output:
cono    resno   date    enddate unit    room    bed admit_disch in_out
02  322359  2015-03-16 00:00:00.000 2019-09-03 06:34:12.417 W   709 P   D   O
02  322359  2015-03-08 00:00:00.000 2015-03-15 00:00:00.000 W   709 P   R   NULL
02  322359  2015-02-20 00:00:00.000 2015-03-07 00:00:00.000 W   709 P   R   NULL
02  322359  2015-02-06 00:00:00.000 2015-02-19 00:00:00.000 W   709 P   R   I

```

Please explain as to how exactly is it working, as i am looking forward to implement the same for my dataset, to remove the nulls and replace them with the previous value whenever there is a null.