私は力ずくのアプローチを取りました:
CREATE TABLE #temp (id int, day1 int, day2 int, day3 int, day4 int, day5 int)
INSERT INTO #temp (id,day1,day2,day3,day4,day5) VALUES (1,4,0,5,0,0),(2,2,0,0,0,0)
SELECT id,
CASE
WHEN day5=0 AND day4=0 AND day3=0 AND day2=0 AND day1=0 THEN 5
WHEN day5=0 AND day4=0 AND day3=0 AND day2=0 THEN 4
WHEN day5=0 AND day4=0 AND day3=0 THEN 3
WHEN day5=0 AND day4=0 THEN 2
WHEN day5=0 THEN 1
ELSE 0
END AS ConsecutiveTrailingZeros
FROM #temp
もちろん、100 を 2 つの連続する 0 としてカウントする必要がある場合、このアプローチは機能しません。これは SQL Server の構文です。MySQL の調整が必要な場合があります。
しかし、ええ、あなたが何をしていても、あなたのアプローチは最適ではないことは確かです。