Я пытаюсь изменить эту хранимую процедуру.
Модифицированная хранимая процедура:
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
?