In a DECODE expression, you can compare NULLs just like you compare values, so if you want to display '0' when country is NULL (similar to the way to display 'INDIA' when country is 1) you can say:
SELECT DECODE ( t.country
, NULL , '0'
, 1 , 'INDIA'
, 2 , 'PAKISTAN'
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all the tables involved, and the results you want from that data.
Explain, using specific examples, how you get those results from that data.
Simplify the problem as much as possible. Remove all the parts that you already know how to handle, and don't affect the part you don't know. If you can show the problem with 2 or 3 values of country, don't post 10.
Always say what version of Oracle you're using (e.g. 184.108.40.206.0).
See the forum FAQ: https://forums.oracle.com/message/9362002
> where t.received_date between '01-jan-2013' and '31-jan-2013'
In addition to what Frank said, don't use dates like this. If t.received_date really is a date type, you should use to_date functions for the literals.
where t.received_date between to_date('01-jan-2013','dd-mon-yyyy') and to_date('31-jan-2013','dd-mon-yyyy')
Then you'll be comparing dates with dates.