Interesting.
You could also do something like this:
WITH CTE AS
(
SELECT
1 AS number
UNION ALL
SELECT
X.number + 1 AS number
FROM
CTE X
WHERE
X.number + 1 <= 100
)
SELECT
REPLICATE ('|', X.number) + REPLICATE ('.', 100 - X.number) AS progress_bar
,CONVERT (VARCHAR (11), X.number) + '%' AS progress_pct
FROM
CTE X