Incorrect query filter according to the requirement
The problem is with the below bind variable substitution:

AND ( sv.project_id                 = DECODE(:'  1368','0', project_id, :'1368')
AND TO_CHAR (date_in, 'dd-MM-yyyy') = DECODE(:'  ', '0', date_in, :'  ')
AND vehicle_no                      = DECODE(:'  GJ-06-0Z-9202', '0', vehicle_no, :'  GJ-06-0Z-9202') )) 


Your application should pass the value to the bind variable correctly. The query you need to use is:

AND sv.project_id = DECODE(:project_id, 0, project_id, :project_id) 
AND date_in       = DECODE(:date_in, 0, date_in, :date_in) 
AND vehicle_no    = DECODE(:vehicle_no, 0, vehicle_no, :vehicle_no)


The above DECODE is just like an IF-ELSE construct. It means, if the passed values are 0, then use the column value from the table, else, use the value that is passed.

Your application need to assign values to the following bind variables:


:project_id
:date_in
:vehicle_no


For example, in SQL*Plus:

SQL&gt; var num number
SQL&gt; exec :num := 10

PL/SQL procedure successfully completed.

SQL&gt; print num

       NUM
----------
        10

SQL&gt; var text varchar2(10)
SQL&gt; exec :text := 'coder'

PL/SQL procedure successfully completed.

SQL&gt; print text

TEXT
--------------------------------
coder


Also, no need to use TO_CHAR for the DATE. Pass the value as DATE. Else, use TO_DATE on the literal on the right hand side. Leave the date as it is, since you should compare the dates and not strings. TO_CHAR converts the date into string in your desired format. You need TO_CHAR only to display the date, not while comparing or date arithmetic. 

UPDATE : 

Your application should pass the value to the bind variable properly. After passing the value, your query still has the bind variable symbol :.


  :'  1368'


If you capture the bind variable value, then it should just be:


  '1368'


Also, there is a leading space in the value. Although, it won't throw any error, it would give you incorrect output.