Nói chung là bạn không thể.
Nó chỉ có giá trị cho câu lệnh tiếp theo. Bạn có thể xác định một chế độ xem với cùng một định nghĩa nếu bạn muốn sử dụng lại định nghĩa cho nhiều câu lệnh hoặc tự cụ thể hóa nó thành một bảng / biến bảng tạm thời để sử dụng lại kết quả .
Đối với trường hợp cụ thể trong câu hỏi của bạn, bạn có thể thực hiện tất cả trong một tuyên bố.
WITH cte
AS (SELECT 1 AS n
UNION ALL
SELECT n + 1
FROM cte
WHERE n + 1 <= 10)
INSERT INTO tbl1
(id)
OUTPUT INSERTED.id
INTO tbl2(id)
SELECT n
FROM cte