Select returns you itemid, start date and end date of each overusage period. Just join it with original table as
"on t.itemID = violations.itemId and t.tranDate between violations.dstart and violations.dEnd "
select t.* from #tbl t
join (
select t.itemID, dusage.tranDate,r.usageRate, r.usageDays, min(t.tranDate) dStart, max(t.tranDate) dEnd, count(*) cnt, sum(usePerDay) usePerDay
from #tbl t
join #usageRetrictions r on t.itemID=r.itemID
join (select itemID, datediff(dd, tranDate, getdate()) ddiff, min(tranDate) tranDate, count(*) as usePerDay from #tbl group by itemID, datediff(dd, tranDate, getdate())
) dusage
on r.itemID = dusage.itemID and t.tranDate between dusage.tranDate and dateadd(dd, r.usageDays,dusage.tranDate)
group by t.itemID, dusage.tranDate,r.usageRate, r.usageDays
having sum(usePerDay)>r.usageRate
) violations
on t.itemID = violations.itemId and t.tranDate between violations.dstart and violations.dEnd