Make a report from 3 tables
First: as noted by joanolo, the code you posted (when added to the set-up in your SQLFiddle link) generates a completely different error.

I obviously cannot guarantee that my changes are correct, but it appears that you were having problems with your JOIN clauses. The ON conditions for the JOINs weren't lined up correctly.

I've modified them as follows:

    FROM `___BillableDatas` d
    JOIN ___Bookings b
    ON d.BIL_BookingId = b.BOO_Id
    JOIN ___Rates r
    ON d.BIL_RateId = r.RAT_Id
    WHERE r.RAT_HotelId = 'cus_AjGG401e9a840D'
    AND d.BIL_Date BETWEEN "2017-01-01" AND "2017-12-31"
    AND d.BIL_Type="Night"


Note: I moved the d.BIL_Date and d.BIL_Type checks to the WHERE clause. It's not necessarily going to generate incorrect results to put them in the JOIN, but I generally recommend that only the checks that are explicitly tied to how the two tables' rows relate to each other be included in the ON clause; it helps clarify your intentions, and makes changing the query later easier.

And here's a SQLFiddle link with the modified code included. It returns a single row.

Now: based on the error you report, I don't think it's necessarily a MySQL issue. It seems likely that you're running the SQL command from somewhere else (PHP code, for instance), and that you've got a problem with how you're passing in your parameters to the statement. I've seen :hotel_id used in such code to indicate a parameter to be replaced, and the fact that you need to use the same value at two points in the code may be causing your problem. It's a direction to look, at least.

Hope this helps.