Sql server 如何在sql中按循环方式检索列值?

Sql server 如何在sql中按循环方式检索列值?,sql-server,Sql Server,通过过滤实际表中的数据,我将其插入到临时表中,然后一些大容量值来自临时表,然后再次将其插入到另一个临时表中进行循环检查,并将实际表中的一些值更新到数据库中。那么,如何以循环方式检索列值呢 直到这里,我到达: CREATE TABLE #result ( PackagePeriod varchar(20), UserId INT, OldEx

通过过滤实际表中的数据,我将其插入到临时表中,然后一些大容量值来自临时表,然后再次将其插入到另一个临时表中进行循环检查,并将实际表中的一些值更新到数据库中。那么,如何以循环方式检索列值呢

直到这里,我到达:

CREATE TABLE #result 
        (           
           PackagePeriod     varchar(20),
           UserId            INT,           
           OldExpiryDate     DATE,         
           AmountToPay       FLOAT,
           PyingAmount       FLOAT,
           Balance           FLOAT,
           LastPaidDate      DATE,
           Company_Id        INT           
        )

create table #temp
        (
            PackagePeriod    varchar(20),
           UserId            INT,           
           OldExpiryDate     DATE,         
           AmountToPay       FLOAT,
           PyingAmount       FLOAT,
           Balance           FLOAT,
           LastPaidDate      DATE,
           Company_Id        INT
        )           

        SET @cmd ='.... where OldExpiryDate<=Replace(CONVERT(VARCHAR(20), (GetDate()-1), 106),' ','-')

    select @count=(select COUNT(PackagePeriod) from #temp)

    if(PackagePeriod='Monthly')
    begin
    update ...
    end
    else if(PackagePeriod='Quarterly')
    begin
    update ..
CREATE TABLE#结果
(           
包装周期varchar(20),
UserId INT,
过期日期,
金额支付浮动,
PyingAmount浮标,
平衡浮动,
最后日期,
公司Id INT
)
创建表#temp
(
包装周期varchar(20),
UserId INT,
过期日期,
金额支付浮动,
PyingAmount浮标,
平衡浮动,
最后日期,
公司Id INT
)           

设置@cmd='。。。。你的问题不清楚。我想你可以用游标或While来解决你的问题

CREATE TABLE #result 
        (           
           PackagePeriod     varchar(20),
           UserId            INT,           
           OldExpiryDate     DATE,         
           AmountToPay       FLOAT,
           PyingAmount       FLOAT,
           Balance           FLOAT,
           LastPaidDate      DATE,
           Company_Id        INT           
        )

declare @PackagePeriod     varchar(20)
declare @UserId            int          
declare @OldExpiryDate     DATE         
declare @AmountToPay       FLOAT
declare @PyingAmount       FLOAT
declare @Balance           FLOAT
declare @LastPaidDate      DATE
declare @Company_Id        INT           

declare result_cursor cursor for 
        SELECT PackagePeriod, UserId,  OldExpiryDate,  AmountToPay, PyingAmount, Balance, LastPaidDate, Company_Id from  #result

OPEN result_cursor

FETCH NEXT FROM result_cursor INTO @PackagePeriod, @UserId,  @OldExpiryDate,  @AmountToPay, @PyingAmount, @Balance, @LastPaidDate, @Company_Id

WHILE @@FETCH_STATUS = 0

BEGIN

    if(@PackagePeriod='Monthly')
    begin
       -- update your table 
    end
    else if(@PackagePeriod='Quarterly')
    begin
        --update table
    end

  FETCH NEXT FROM result_cursor INTO @PackagePeriod, @UserId,  @OldExpiryDate,  @AmountToPay, @PyingAmount, @Balance, @LastPaidDate, @Company_Id

END

CLOSE result_cursor

DEALLOCATE result_cursor

提供一些示例数据和预期输出。那个存储过程乱七八糟。正如所贴的,这没有多大意义。我想提醒你,听起来你把事情弄得比实际需要复杂得多。此外,您似乎有一些数据类型可能不适合您正在做的事情。这似乎是一个金融应用程序,因为这样的浮动通常是一个糟糕的选择,因为它不是一个精确的数据类型。那么解决方案是什么呢?Thanq非常理解我的确切问题和确切的最佳答案。