Thanks everyone. I found the solution.
CREATE TABLE #t1
(D1 DATETIME
, LOC NVARCHAR(10)
, AMOUNT INT)
GO
INSERT INTO #t1 VALUES('2010-01-02','place1',100)
INSERT INTO #t1 VALUES('2010-01-02','place1',100)
INSERT INTO #t1 VALUES('2010-01-14','place1',110)
INSERT INTO #t1 VALUES('2010-02-11','place2',80)
INSERT INTO #t1 VALUES('2010-02-11','place3',200)
INSERT INTO #t1 VALUES('2010-04-20','place1',330)
INSERT INTO #t1 VALUES('2010-04-22','place2',120)
INSERT INTO #t1 VALUES('2010-04-26','place3',220)
INSERT INTO #t1 VALUES('2010-05-01','place1',150)
INSERT INTO #t1 VALUES('2010-05-03','place2',180)
INSERT INTO #t1 VALUES('2010-05-06','place2',50)
INSERT INTO #t1 VALUES('2010-05-06','place3',100)
INSERT INTO #t1 VALUES('2010-05-11','place2',200)
GO
SELECT DISTINCT a.loc,ISNULL(b.amount,0) AS amount FROM #t1 as a
LEFT OUTER JOIN
(SELECT loc,
sum(amount) as amount
FROM #t1 as b
WHERE d1 >= '2010-02-01' AND d1 <= '2010-02-28'
GROUP BY loc) AS b
ON a.loc = b.loc