how to make a particular field into seperate columns?
This query gives you the answer you want including "NULL" values if for a given No one of the Usernames is null. 

SELECT  t1.NO No, 
        t1.VALUE AS PORT, 
        t2.VALUE AS Vip1 
FROM table1 t1 FULL OUTER JOIN table1 t2 
     ON t1.NO = t2.NO 
WHERE t1.USERNAME = 'Port' AND t2.USERNAME = 'Vip1';


On the table:

SQL&gt; select * from table1 where username = 'Port';

NO USERNAME             VALUE
-- -------------------- ----------------------------------------
01 Port                 Funds
02 Port                 Bank


I changed the column "USER" to "USERNAME", because "USER" is a reserved word in oracle. 

This gives the output (in oracle 11g):

No PORT VIP1
-----------------
01 Funds Systems
02 Bank Authority


Another way to achieve this is a PIVOT table. A caveat is, that PIVOT tables only work with aggregate functions. For example, if you had two different entries for "Port" for No = 01, this would only return one of them. 

SELECT * FROM 
    (SELECT No, Username, VALUE from table1) 
    PIVOT (MAX(Value) 
           FOR (Username) 
           IN ('Vip1', 'Port')) 
ORDER BY No;


A slight variation of this gives you a pivot table for unspecified Usernames. 
Unfortunately, oracle11g only provides XML output for this. 

 SET LONG 10000 &lt;-- to see the output on the terminal
 SELECT * FROM (
    SELECT No, Username, VALUE FROM table1) 
    PIVOT XML (MAX(Value) 
               FOR (Username) 
               IN (SELECT DISTINCT Username FROM table1));


For more information on oracle pivot tables see http://www.oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1.php