Is this in line with what you are after?
CREATE TABLE [dbo].[Users](
[month] [int] NOT NULL,
[user] [int] NOT NULL,
[target] [int] NOT NULL
) ON [PRIMARY]
GO
DELETE FROM users
insert into users ([month], [user], [target]) values
(1,001,1000), (1,001,1000),(1,002,2000),(1,001,1000), (2,002,2000), (2,002,2000),
(3,002, 2000), (3,002,2000), (4, 002, 2000);
With RowAdded AS (
SELECT ROW_NUMBER() OVER( Partition By [user],[month] order by [user]) AS RowNum,
U.*
FROM users U),
Targeted AS (
SELECT
RA.[month],
RA.[user],
CASE WHEN RowNum = 1 THEN [target]
ELSE 0 END AS target
FROM RowAdded RA)
SELECT * FROM Targeted