这是表格
id
1
2
10
15
19
是否可以获得这样的输出
row id
1 1
2 2
3 null
4 null
5 null
6 null
7 null
8 null
9 null
10 10
11 null
12 null
13 null
14 null
15 15
16 null
17 null
18 null
19 19
答案 0 :(得分:0)
数字表可以让您的查询变得非常简单。一个按顺序编号的表。你只需要一个LEFT JOIN with table。 e.g。
DECLARE @T TABLE
(ID INT)
INSERT INTO @T
VALUES(1), (3),(10), (15)
;WITH numbers AS
(
SELECT 1 AS N
UNION ALL
SELECT N + 1
FROM numbers
WHERE N < 1000
)
SELECT *
FROM numbers A
LEFT JOIN @T B
ON A.N = B.ID
OPTION (maxrecursion 0)
在这个例子中,我已经生成了数字直到1000,你可以通过连接一个整数列的顺序值的现有表来避免这种情况。
答案 1 :(得分:0)
SELECT
TOP (SELECT MAX(id) FROM Your_Table) num.n AS row,
tbl.id AS id
FROM numbers num
LEFT JOIN Your_Table tbl
ON num.n = tbl.id