PDA

View Full Version : ساخت کوئری



mrali.jalali
چهارشنبه 05 آبان 1395, 11:30 صبح
سلام . من جدولی به شکل زیر دارد .میخوام به گونه ای کوئری بزنم که به تعداد amt در کوئری ردیف بهم بده . مثلا برای بستنی مقدار 3 می باشد میخوام در خروجی سه ردیف تکرار بشه .ممنون
143174

Mag-Mag
چهارشنبه 05 آبان 1395, 15:34 عصر
شما برای این کار باید یک Cursor بنویسی
اول این پروسیجر رو ایجاد کن

--By Mostafa Sabeghi
-- =============================================
create PROCEDURE [dbo].[sp_prCounter]
@_prcode int
as

declare @tblProdRowBase table(prcode int not null,prname nvarchar(300) not null, amt bigint not null)
BEGIN
declare @pcode int,@pname nvarchar(300),@pamt int
declare amtCursor cursor for
select prcode,prname,amt from table_1
where prcode=@_prcode
open amtCursor
fetch next from amtCursor into @pcode,@pname,@pamt
while (@@fetch_status=0)
begin
if(@pamt>0)
begin
while(@pamt>0)
begin
insert into @tblProdRowBase
select prcode,prname,amt from table_1
where prcode=@pcode
set @pamt=@pamt-1;
end
end
fetch next from amtCursor into @pcode,@pname,@pamt
end
close amtCursor
deallocate amtCursor
END

select * from @tblProdRowBase


حالا با فراخونی این پروسیجر (بعنوان ورودی prcode رو من گذاشتم)
به ازای amt اون محصول به تو ردیف میده


exec sp_prCounter @_prcode=3

pashna
پنج شنبه 06 آبان 1395, 04:21 صبح
DECLARE @prdCode INT = 1003 ;
DECLARE @i INT


SELECT @i = amt
FROM Table
WHERE prdCode = @prdCode


WHILE @i <> 0
BEGIN
SELECT *
FROM Table
WHERE prdCode = @prdCode
SET @i = @i - 1 ;
END ;