Chọn các giá trị không tồn tại với VALUES
từ khóa. Sau đó, sử dụng JOIN
s để tạo ra rất nhiều và rất nhiều kết hợp (có thể được mở rộng để tạo hàng trăm nghìn hàng và hơn thế nữa).
Phiên bản ngắn và nhanh (không dễ đọc):
WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1
Bản trình diễn
Phiên bản dài hơn:
SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1
Bản trình diễn
Cả hai phiên bản đều có thể dễ dàng được mở rộng với WHERE
, giới hạn đầu ra của các số trong một phạm vi do người dùng chỉ định. Nếu bạn muốn sử dụng lại nó, bạn có thể xác định một hàm có giá trị bảng cho nó.