A and B are aliases, and Z is the name for the CTE. You can reference a derived column using a subquery, or since I've already got a CTE, I can stack another one:;WITH z(name, value, rn) AS (SELECT name, value, ROW_NUMBER() OVER (ORDER BY name) FROM Table1),Diff (name, value, difference) AS (SELECT a.name, a.value, CASE WHEN b.value-a.value>300 THEN NULL ELSE CAST(b.value AS VARCHAR) + '-' + CAST(a.value AS VARCHAR) END diff FROM z a LEFT JOIN z b ON a.rn=b.rn-1)SELECT name, value, difference FROM Diff