利用在带有游标的过程中使用 WHILE的方法取出各个门店零售的销售数据(遍历多表取出数字)

@@FETCH_STATUS

返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。

返回值
描述

0
FETCH 语句成功。

-1
FETCH 语句失败或此行不在结果集中。

-2
被提取的行不存在。

----------------------------------------------------------------
-- 设计系统中取数的程序如下:
----------------------------------------------------------------
 ----通过WHILE 语句遍历
Declare @sDate char(10)
Declare @sSQL varchar(8000)
select @sDate= Convert(Varchar(10),getdate(),120)
--set @sDate='2010-11-01'
begin
set @ssql = 'DELETE FROM XJY_JXC_SUP_DETAIL WHERE (RUN_DATE='''+@sDate+''') AND md_x<>0 AND x<>0'
   Exec(@sSQl)
end
DECLARE tnames_cursor CURSOR
FOR
   SELECT  'ShopProdSale'+ShopCode 
   FROM ShopItem
   where shoptype='01'
OPEN tnames_cursor
DECLARE @tablename sysname
--SET @tablename = 'authors'
FETCH NEXT FROM tnames_cursor INTO @tablename
WHILE (@@FETCH_STATUS <> -1)
BEGIN
   IF (@@FETCH_STATUS <> -2)
   BEGIN   
      SELECT @tablename = RTRIM(@tablename)     
      set @sSQL='
      insert into XJY_JXC_SUP_DETAIL 
(run_date,suppl_No,x,x_qty,md_x,md_x_qty,XJY_SUP_DEMO)      
     SELECT t1.wdate,
       t2.supcode,
       sum(SaleAmt) as x,
       sum(CountN) as x_qty,
       sum(SaleAmt) as md_x,
       sum(CountN) as md_x_qty,
      '+''''+SubString(@tablename,13,3)+'号店销售'+''''+'
  from '+@tablename+' t1, product1 t2
 where t1.prodcode = t2.prodcode
   and (WDate='''+@sDate+''')
 group by t1.wdate, t2.supcode'
    Exec(@sSQl)
--print(@ssql)
   END
   FETCH NEXT FROM tnames_cursor INTO @tablename
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor

说明:

门店零售

所有的表是动态表 每个语句应该 遍历所有的门店 插入

1、删除当天XJY_JXC_SUP_DETAIL表的门店销售
2、遍历当天门店(直营店)
3、遍历插入当天门店的销售数据

 

 

--注释

这个程序有用的地方是在取多个表的一系列数据汇总时用的,涉及到循环利用表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值