• WITH CTE_NoZero AS

    (SELECT ID, ReadNo, deviceNo FROM DeviceReading WHERE ReadNo <> 0)

    SELECT ReadNo, deviceNo

    FROM

    (SELECT ReadNo, deviceNo, RID = ROW_NUMBER() OVER (PARTITION BY deviceNo ORDER BY ID DESC)

    FROM CTE_NoZero) tmp

    WHERE RID = 1;

    Need an answer? No, you need a question
    My blog at https://sqlkover.com.
    MCSE Business Intelligence - Microsoft Data Platform MVP