Это должно работать.но это не исполнитель.(если вас интересует только количество, вы, вероятно, не хотите рассчитывать суммирование и упорядочение сумм)
SELECT COUNT(*)
FROM (
SELECT
MONTH(DHSTMP),
SUM(DHDLDY),
SUM(DHBUDS),
YEAR(DHSTMP)
FROM DSHDAY
WHERE DHSTMP BETWEEN '2009-07-26 00:00:00' AND '2011-03-09 23:59:59'
GROUP BY
YEAR(DHSTMP),
MONTH(DHSTMP)
ORDER BY
YEAR(DHSTMP),
MONTH(DHSTMP)
) i
Попробуйте это
SELECT COUNT( DISTINCT i.month_year )
FROM (
SELECT
CONCAT( MONTH(DHSTMP), YEAR(DHSTMP) ) AS month_year
FROM DSHDAY
WHERE DHSTMP BETWEEN '2009-07-26 00:00:00' AND '2011-03-09 23:59:59'
) i
Вариация (в ответ на комментарий Майка)
SELECT COUNT(*)
FROM (
SELECT 0
FROM DSHDAY
WHERE DHSTMP BETWEEN '2009-07-26 00:00:00' AND '2011-03-09 23:59:59'
GROUP BY
YEAR(DHSTMP),
MONTH(DHSTMP)
) i