@DaveMaxwell @r937 Thanks for all your help and guidance. Finally cracked it, I think…
For others who are interested he’s my final query
` SELECT
bookingID
, bookingS
, COUNT(*) AS bkDiM
FROM booking b
INNER JOIN datehelper d
ON d.dt BETWEEN b.bookingS AND
CASE
WHEN b.bookingE IS NULL
THEN
CASE
WHEN b.transfer IS NULL
THEN DATE_ADD(CURDATE(), INTERVAL 1 DAY)
ELSE DATE_ADD(b.transfer, INTERVAL 1 DAY)
END
ELSE DATE_ADD(b.bookingE, INTERVAL 1 DAY)
END
WHERE d.dt <= CURDATE()
GROUP BY EXTRACT(YEAR_MONTH FROM d.dt)`