I am trying to use something like what oracle has
count(empl_id) over(partition by empl_id order by date rows between interval "1" month preceding and "1" month preceding)
With no luck since its not compatible with teradata.
I assume you ment range between interval '1' month preceding and '1' month preceding instead of rows. The RANGE keyword is not implemented in Teradata (probably due to possible performance problems).
Your query returns 1 when there's exactly one month between the current and the previous row, so you might try to rewrite:
case when add_months(dt,-1)
over (partition by empl_id
order by dt
rows between 1 preceding and 1 preceding)
I don't know exactly how Oracle treats the '1' month for end-of-months dates, maybe you have to switch to oAdd_months instead.