add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
DECLARE @TimesTableUpperBound int = 15;

DECLARE @cols nvarchar(max) = N'',
@piv nvarchar(max) = N'',
@sql nvarchar(max) = N';WITH n(n) AS
(SELECT 1 UNION ALL SELECT n+1 FROM n WHERE n < @ub)
SELECT src = QUOTENAME(n.n), p.* FROM n CROSS APPLY
(VALUES(';

;WITH n(n) AS (SELECT 1 UNION ALL SELECT n+1
FROM n WHERE n < @TimesTableUpperBound)
SELECT @cols = STRING_AGG(CONCAT('n.n*',n),','),
@piv = STRING_AGG(QUOTENAME(CONCAT('* ',n)),',')
FROM n;

SELECT @sql += @cols + N'))
AS p(' + @piv + ');';

SELECT @sql;
EXEC sys.sp_executesql @sql, N'@ub int', @TimesTableUpperBound;
(No column name)
;WITH n(n) AS
  (SELECT 1 UNION ALL SELECT n+1 FROM n WHERE n < @ub)
SELECT src = QUOTENAME(n.n), p.* FROM n CROSS APPLY
(VALUES(n.n*1,n.n*2,n.n*3,n.n*4,n.n*5,n.n*6,n.n*7,n.n*8,n.n*9,n.n*10,n.n*11,n.n*12,n.n*13,n.n*14,n.n*15))
AS p([* 1],[* 2],[* 3],[* 4],[* 5],[* 6],[* 7],[* 8],[* 9],[* 10],[* 11],[* 12],[* 13],[* 14],[* 15]);
src * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[2] 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
[3] 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45
[4] 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60
[5] 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75
[6] 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90
[7] 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105
[8] 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120
[9] 9 18 27 36 45 54 63 72 81 90 99 108 117 126 135
[10] 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150
[11] 11 22 33 44 55 66 77 88 99 110 121 132 143 154 165
[12] 12 24 36 48 60 72 84 96 108 120 132 144 156 168 180
[13] 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195
[14] 14 28 42 56 70 84 98 112 126 140 154 168 182 196 210
[15] 15 30 45 60 75 90 105 120 135 150 165 180 195 210 225