Имеет смысл, что вы не можете получить 0 для записей 'A1'
Вы пытаетесь сделать JOIN
для таблицы (DetailsTable), у которой нет 'A1 'запись за 202001, 202002. Так что нечего сопоставлять, поэтому вы не получите счет 0, а значение null
вместо Did
.
Случай будет другим, если в вашей таблице MonthTable была запись Did
.
Вместо этого вы могли бы
SELECT mt.MName, COUNT(dt.Mno), mt.MNo FROM MonthTable mt
LEFT JOIN DetailsTable dt on mt.MNo = dt.MonthofDdate
-- where dt.did = 'A1'
GROUP BY mt.MName, mt.MNO
Если вы все еще хотите дифференцировать по Did
, вы можете добавить его в оператор выбора и GROUP By
.
Если вы закомментируете оператор WHERE
, вы увидите, что я пытался объяснить Вы.
Я думаю, что вы должны следовать рекомендациям Date
, а также это не очень хороший дизайн таблицы, так как вы не должны делать JOIN
с VARCHAR
переменными