Assuming you don't have SQL2005 and therefore the PIVOT function you could always resort to
DECLARE @display TABLE(ID INT IDENTITY(1,1),Display VARCHAR(50)) DECLARE @lRow TINYINT SET @lRow = 0 DECLARE @NewRow VARCHAR(50) INSERT INTO @display (Display) VALUES('|---+---+---|') WHILE @lRow IS NOT NULL BEGIN SELECT @lRow = MIN(RowID) FROM dbo.sudoko WHERE RowId>@lRow IF @lRow IS NOT NULL BEGIN SET @NewRow='' SELECT @NewRow = COALESCE(@NewRow,'')+CAST(CellValue AS CHAR(1)) FROM dbo.sudoko WHERE RowId=@lRow SET @NewRow = LEFT(@NewRow,3)+'|'+SUBSTRING(@NewRow,4,3)+'|'+RIGHT(@NewRow,3) INSERT INTO @display (Display) VALUES('|'+@NewRow+'|') IF @lRow %3 = 0 INSERT INTO @display (Display) VALUES('|---+---+---|') END END SELECT Display FROM @display