You don't say what DBMS you are using, and the solution to this is DBMS-specific. I will show you the Oracle solution, other databases will probably have a similar (but different) function:
SELECT item, TRUNC( datecol, 'MONTH' ) month, SUM( value ) month_value
FROM mytable
GROUP BY item, TRUNC( datecol, 'MONTH' );
Item | Month | Month_Value
123 | 02/01/2003 | 160
...
123 | 09/01/2003 | 60
124 | 02/01/2003 | 120
...
124 | 09/01/2003 | 40
This has "truncated" the date to the 1st of the month.
If you wanted the month displayed differently, you would format it. e.g.
TO_CHAR( datecol, 'MM/YYYY' )
would show 02/2003, 09/2003 etc. Again, this is Oracle-specific, other DBMSs' functions will be a bit different.
If you are not on Oracle, search your DBMS's documentation for "date functions".