2015-11-04 14 views
0

這是表行的總數應等於最大ID在SQL

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

Numbers表格的輸出可以讓你的查詢非常簡單。一個按順序包含數字的表格。你只需要一個左表連接。 例如

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,則可以通過加入現有的表中與序列值的整數列避免這種情況。

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