我本质上是在尝试修改这个存储过程。
修改后的存储过程:
CREATE PROCEDURE sp1(d1 date, d2 date, client INT(10))
declare d datetime;
create TEMPORARY TABLE foo (d date NOT NULL, Amount INT(10) DEFAULT 0);
set d = d1;
while d <= d2 do
insert into foo (d) values (d);
set d = date_add(d, interval 1 day);
end while;
SELECT SUM(p.Amount), foo.d
FROM foo LEFT JOIN ItemTracker_dbo.Payment ON foo.d = p.Datetime
WHERE p.ClientId = ClientId
GROUP BY
foo.d;
DROP TEMPORARY TABLE foo;
end PROCEDURE
注意: WHERE 子句... p.ClientId = client
我绞尽脑汁想弄清楚为什么它忽略了零。
删除WHERE p.ClientId = client
程序后开始返回NULL...
为什么 WHERE 子句省略空行?我可能误解了a到底LEFT JOIN
是什么。
如何过滤SUM(p.Amount)
结果以仅返回总和WHERE clientId = client
?