本文介绍了使用CTE创建值表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试创建一个带有整数数据类型的1列表来计算50,然后回到1.这个表最终应该总共有100行,我想删除所有重复行的
,但我需要用CTE来完成。请帮助
推荐答案
听起来很矛盾。如果您创建CTE计数到50并返回它将具有日期1,2 ... 50,49,... 1
然后当您删除重复时,您将最终只有1。 ..50
无论如何这里是如何您可以生成计数到50并且像这样返回
;With Count_Numbers
AS
(
SELECT 1 AS N, 1 AS Cnt
UNION ALL
SELECT N + CASE WHEN Cnt + 1 <= 50 THEN 1 ELSE -1 END,Cnt + 1
FROM Count_Numbers
WHERE N + CASE WHEN Cnt + 1 <= 50 THEN 1 ELSE -1 END > 0
)
SELECT N
FROM Count_Numbers
ORDER BY Cnt
OPTION (MAXRECURSION 0)
/*
Output
--------------------------------------------
N
----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
*/
如果你需要消除重复只使用SELECT DISTINCT而不是SELECT
这篇关于使用CTE创建值表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!