Sql 存储过程的游标或循环
我有一张表,里面有记录。其中一个字段是数量字段。对于该行,我必须将同一行(数量字段中有多少次)放入另一个表中。我还必须从第三个表中获得使每一行唯一的数字赋值 所以 tblrecnumassignments--分配编号 claimstoexplode—要按每行数量分解的行 声明--每个记录将驻留的位置 这是我的三张桌子 我可以得到一行插入的数量。但它使用相同的rec num,如何让它转到claims to explode中的下一行。我太迷路了,老板要我完成这件事Sql 存储过程的游标或循环,sql,loops,cursor,Sql,Loops,Cursor,我有一张表,里面有记录。其中一个字段是数量字段。对于该行,我必须将同一行(数量字段中有多少次)放入另一个表中。我还必须从第三个表中获得使每一行唯一的数字赋值 所以 tblrecnumassignments--分配编号 claimstoexplode—要按每行数量分解的行 声明--每个记录将驻留的位置 这是我的三张桌子 我可以得到一行插入的数量。但它使用相同的rec num,如何让它转到claims to explode中的下一行。我太迷路了,老板要我完成这件事 SET ARITHABORT OF
SET ARITHABORT OFF SET ANSI_WARNINGS OFF
declare @recnum as varchar(100),
@lngrecnum as varchar(100),
@vwclaimscount as int,
@count as int
select @vwclaimscount = COUNT([dlr num]) from claimstoexplode --outer loop number
select @lngrecnum = MAX([rec num] + 1) from tmpClaims_RecNumAssignment
print @lngrecnum
select @count = claimstoexplode.qty from dbo.claimstoexplode --inner loop
begin
if @vwclaimscount > 0
insert into tmpClaims_RecNumAssignment
( operator, dtmadded)
values ('explode5', getdate())
insert into tmpclaims1
([Dlr Num]
,[Promo]
,[Trans Code]
,[Proc Date]
,[Control Num]
,[Invoice Num]
,[Clm Date]
,[Amt Claimed]
,[Amt Appr]
,[Amt Paid]
,[Ad From]
,[Ad To]
,[Media]
,[Media Desc]
,[Audit 1]
,[Audit 2]
,[Audit 3]
,[Audit 4]
,[Audit 5]
,[Audit 6]
,[Prod Code 1]
,[Prod Code 1 %]
,[Prod Code 1 Amt]
,[Prod Code 1 Adv Amt]
,[Prod Code 2]
,[Prod Code 2 %]
,[Prod Code 2 Amt]
,[Prod Code 2 Adv Amt]
,[Comment]
,[Received Date]
,[Last Modified]
,[Ratio]
,[Number Of Ads]
,[Amt Applied]
,[UM]
,[Audited Amt]
,[Rated Ads]
,[Branch Number]
,[Operator]
,[Bal Pending]
,[Paid From Pending]
,[Store Num]
,[Clm Spec 1]
,[Clm Spec 2]
,[Status]
,[Rec Num]
,[Doc Type]
,locked
)
select
[dlr num]
,prognum
,'X'
,GETDATE()
,'0'
,''
,[received date]
,round([claimed amt]/qty,2)
,'0'
,'0'
,dtmfrom
,dtmto
,'9'
, dbo.Promos.[Promo Misc 1]
,'01'
,''
,''
,''
,''
,''
,[Product]
,'0'
,'0'
,'0'
,bundlemodel
,'0'
,'0'
,'0'
,''
,[received date]
,''
,'100'
,'1'
,'0'
,'0'
,'0'
,'0'
,'0'
,claimstoexplode.operator
,'0'
,'0'
,'0'
,LEFT(reference,10)
,[record number]
,'1'
, @lngrecnum ,'L' ,'1' from claimstoexplode inner join
dbo.promos ON dbo.Promos.Promo = dbo.claimstoexplode.prognum
set @vwclaimscount = @vwclaimscount - 1
set @lngrecnum = @lngrecnum + 1
set @count = @count - 1
结束如果您提供一些示例数据,您可能会得到更多的答案:如果您展示一个示例,说明您从何开始,以及您想要的结果,那么我们可能能够理解您对业务逻辑的英语描述。SQL只是结构化查询语言—一种被许多数据库系统使用的语言,而不是数据库产品。。。很多东西都是特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标签)。。。。