Siddharth_Gupta Ответов: 1

Я хочу создать хранимую процедуру в SQL server, где я передам параметр "N type int", а затем процедура создаст таблицы умножения


допустим, N=2

ожидаемый результат
1  2  
2  4
3  6
4  8
5  10
6  12
7  14
8  16
9  18
10  20

а затем в следующем столбце я хочу получить сумму обоих столбцов или n количество столбцов.

Что я уже пробовал:

ALTER procedure [dbo].[project]

	@N int

AS

BEGIN
	declare @tbl1 table(ID int identity(1,1), MT int )
	declare @tbl2 table(ID int identity(1,1), MT int)
	declare @T int
	declare @i int, @j int
	set @i=1
	while @i<=@N
	begin			
		set @j=1
			while @j<=10
			begin
				set @T=@i*@j
				insert into @tbl1 values(@T)
				set @j=@j+1
			end
		select *from @tbl1
		set @i=@i+1
	end	
END 


приведенный выше код создает вывод умножения, но в разных таблицах, пожалуйста, предложите решение с запросом.

Siddharth_Gupta

Я думаю, что нашел способ обойти эту проблему, ниже приведен код, который я использовал:
Изменить процедуру [dbo].[проект]

@N int

АС

НАЧАТЬ
объявить @ТБЛ день (ID int удостоверение(1,1),инт х1, х2 инт, инт Х3, Х4 инт, инт Х5, Х6 инт, инт Х7, Х8 инт, инт Х9, х10 инт sumall инт)
объявите таблицу @tbl1 (ID int identity(1,1),ttl int)
declare @amount int
объявить @T int
объявить @x int, @y int
set @x=1
set @y=1
в то время как @y<=@N
начать
установить @T=@x*@y
вставьте в @tbl значения(@T, @T*2, @T*3, @T*4, @T*5, @T*6, @T*7, @T*8, @T*9, @T*10,@T+ @T*2+ @T*3+ @T*4+ @T*5+ @T*6+ @T*7+ @T*9+ @T*10)
конец
выберите *из @tbl
КОНЕЦ


//Если у кого-то есть лучшая работа, пожалуйста, поделитесь ею//

#realJSOP

Посмотрите на мое решение.

1 Ответов

Рейтинг:
8

#realJSOP

Попробовать это:

DECLARE @n INT = 2;

;WITH cte AS
(
    -- create a common table expression with ten rows with the "Value" column 
    -- being set to the row number
    SELECT TOP(10) Value = ROW_NUMBER() 
    OVER (ORDER BY[object_id]) FROM SYS.ALL_OBJECTS
)
-- and then select the rows, identify the mulitplier (@n), and set the result
SELECT Value,
       @n AS Multiplier,
       Value * @n AS Result
FROM   cte;


Вы должны получить 10 строк, которые показывают значение (1-10), множитель (в данном случае это 2) и результат умножения значения на множитель.

Если вам нужно больше 10 строк, просто измените TOP(10) предложение к отражению желаемого значения.


Maciej Los

5ed!