这是我下面的代码,用于反向打印数字并继续递减。我可以打印,但是应该从下到上开始。基本上,我需要以下输出。
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
我写了下面的查询,但是无法以上面的格式输入。下面的代码在SQL中。任何帮助,将不胜感激。
DECLARE @X INT,@STRING VARCHAR (100)
SET @STRING = ''
SET @X = 1
WHILE @X<6
BEGIN
SET @STRING = @STRING +' '+ CAST (@X AS VARCHAR (100))
PRINT REVERSE(@STRING)
SET @X +=1
END
上面的查询给了我下面的输出:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
答案 0 :(得分:1)
您可以使用辅助变量:
DECLARE @X INT = 1
,@STRING VARCHAR (1000) = ''
,@res VARCHAR(1000) = '';
WHILE @X<6
BEGIN
SET @STRING = CAST (@X AS VARCHAR (100)) + ' ' + @STRING;
SET @res = @STRING + CHAR(10) + @res;
SET @X +=1;
END
PRINT @res;
输出:
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
答案 1 :(得分:0)
一种选择是使用递归CTE获取所需的数据,然后使用游标处理打印语句(如果无法使用记录集)。该查询将是这样的:
with numbers(n, s) AS (
SELECT 1, convert(varchar(max), 1)
UNION ALL
SELECT n+1, convert(varchar(max), n+1) + ' ' + s
FROM numbers
WHERE n < 5
)
SELECT s FROM numbers ORDER BY n DESC
给你这个:
s
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
同样,如果您需要打印值(而不是作为记录集获取),则可以使用光标在结果上循环。
答案 2 :(得分:-1)
DECLARE @X INT,@STRING VARCHAR (100)
SET @STRING = ''
SET @X = 1
WHILE @X<6
BEGIN
SET @STRING = CAST (@X AS VARCHAR (100)) + ' ' + @STRING
PRINT REVERSE(@STRING)
SET @X +=1
END