一个问过了的存储过程的新问题,高分求解!

ygrkristy2 2003-08-13 05:40:12
存储过程如下


CREATE procedure SelPosData
@BeginDate datetime, --统计起始时间
@EndDate datetime --统计结束时间
as
declare @intDate int --统计总天数
declare @intK int --当前统计天数
declare @intJ int --当前统计月数
declare @datTmpDate datetime --当前统计时间
declare @strYear char(2) --当前统计年
declare @strMonth char(2) --当前统计月
declare @strDay char(2) --当前统计日
declare @strYYMMDD char(6) --当前统计年月日
declare @strTableName char(8) --当前统计表名
declare @strSql varchar --当前统计查询语句

--取出统计总天数及设置当天统计天数为0
set @intDate = datediff(day,@BeginDate,@EndDate)
set @intK = 0
set @intJ = 0

--清除统计数据表中的数据
truncate table tmpCardStat
truncate table tmpCardData
truncate table tmpMerData
truncate table tmpBankData
if @@error = 0 print 'Truncate temp tables succeed, begin stat query...'

--循环取出基础数据表中的数据,进行第一轮统计
while @intK<=@intDate
begin
set @datTmpDate = dateadd(day,@intK,@BeginDate)
set @strYear = right(convert(varchar,year(@datTmpDate)),2)
set @strMonth = right('00'+convert(varchar,month(@datTmpDate)),2)
set @strDay = right('00'+convert(varchar,day(@datTmpDate)),2)
set @strYYMMDD = @strYear + @strMonth + @strDay
set @strTableName = 'L' + @strYYMMDD + 'P'

--按卡号进行统计
exec ('insert into tmpCardStat'+
' select Tran_acc as CardNo,count(*) as TranTimes,Sum(Setm_amt) as TranAmount,Iss_code as BankCode,'''+@strYYMMDD+''' as TranDate'+
' from '+@strTableName+
' where Rep_code=''00'' and Sett_flag=''Y'' group by Tran_acc,Iss_code')
if @@error = 0 print datename(hh,getdate())+':'+datename(mi,getdate())+':'+datename(ss,getdate())+' Query cardholders info from table ['+@strTableName+'] succeed.'

--按商户进行统计
exec ('insert into tmpMerData'+
' select Mer_id as MerNo,count(*) as TranTimes,Sum(Setm_amt) as TranAmount,'''+@strYYMMDD+''' as TranDate'+
' from '+@strTableName+
' where Rep_code=''00'' and Sett_flag=''Y'' group by Mer_id')
if @@error = 0 print datename(hh,getdate())+':'+datename(mi,getdate())+':'+datename(ss,getdate())+' Query merchants info from table ['+@strTableName+'] succeed.'

--按发卡行进行统计
exec ('insert into tmpBankData'+
' select Iss_code as BankCode,count(*) as TranTimes,Sum(Setm_amt) as TranAmount,'''+@strYYMMDD+''' as TranDate'+
' from '+@strTableName+
' where Rep_code=''00'' and Sett_flag=''Y'' group by Iss_code')
if @@error = 0 print datename(hh,getdate())+':'+datename(mi,getdate())+':'+datename(ss,getdate())+' Query issue banks info from table ['+@strTableName+'] succeed.'

set @intK = @intK + 1
set @intJ = @intJ + 1

--当数据满一月时,取出第一轮卡号统计数据表中的数据,进行第二轮统计
if (@intJ = 30) or ( @intK=@intDate)
begin
exec ('insert into tmpCardData'+
' select CardNo,Sum(TranTimes) as TranTimes,Sum(TranAmount) as TranAmount,BankCode,'''+@strYear+@strMonth+''' as TranDate'+
' from tmpCardStat'+
' where TranAmount>10000.00 group by CardNo,BankCode')
if @@error = 0
begin
--清除第一轮卡号统计数据表中的数据
truncate table tmpCardStat
print datename(hh,getdate())+':'+datename(mi,getdate())+':'+datename(ss,getdate())+' Query cardholders info from table [tmpCardData] succeed.'
set @intJ = 0
end
end
end


GO

以上的存储过程是一个循环,用来进行某个时间段内的数据的分析,分析的结果都存放在
tmpcarddata,tmpmerdata和tmpbankdata中

问题是:在上个存储过程的第二轮分析后,再进行如下的第三轮,第四轮的分析,即在第二轮的循环结束后进行进一步的分析
select ...(具体条件略) into 新表1 from tmpcarddata(第二轮分析后存放按卡号统计的数据) ——第三轮

然后在以上的统计后执行
select ...(具体条件略) into 新表2 from 新表2 ——第四轮

请问以上的第三,第四轮的sql语句怎样写进存储过程中


...全文
18 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ygrkristy2 2003-08-14
  • 打赏
  • 举报
回复
这个我知道,我的愿意是把这两条语句写进去后,程序到了此处能不能按顺序往下走,要不要加什么关键字之类的
txlicenhe 2003-08-13
  • 打赏
  • 举报
回复
up
CrazyFor 2003-08-13
  • 打赏
  • 举报
回复
select ...(具体条件略) into 新表1 from (第二轮分析后存放按卡号统计的数据) as tmpcarddata

select ...(具体条件略) into 新表3 from 新表2 ——第四轮

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧