总行数应该等于sql中的max id

时间:2015-11-04 05:31:56

标签: sql-server-2008

这是表格

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

2 个答案:

答案 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