存储过程中动态累加的问题请教

am2000 2003-10-17 11:31:40
现有一存储过程如下:

CREATE procedure sp_StockMonthReport @year char(4),@month char(2)
As
declare @sql varchar(8000),@day int,@dd int,@stock_amount int

/*--得到要查询年月的天数
select @dd=day(dateadd(month,@month,dateadd(year,@year-1999,'1999-01-01'))-1)
,@day=1
,@sql='
SELECT stock.tz_year, stock.tz_month, v_book.fashion_code, v_book.size_code,
stock.qc_amount' */
--declare @dd int,@sql varchar(10)
--declare @n datetime
--select @n=Cast(@year+@month+'01' AS DateTime)
--select @n=@year+'-'+@month+'-01'
--SELECT @n='20030901'
--select @dd = datediff(day,@n-day(@n)+1,dateadd(month,1,@n-day(@n)+1))

--先取出期初数量
--Select @Stock_amount=qc_amount from stock where tz_year=@year --andtz_month=@month
--
Select @day=1,@dd=31,@sql='SELECT stock.tz_year, stock.tz_month, v_book.fashion_code, v_book.size_code, stock.qc_amount'
while @day<=@dd
--进库,出库
select @sql=@sql+',SUM( CASE WHEN day(v_book.date)='+cast(@day as varchar) +' AND (v_book.lb=''02'' OR v_book.lb=''01'') THEN Amount ELSE 0 END) AS rk_'+cast(@day as varchar)
+',SUM(CASE WHEN day(v_book.date)='+cast(@day as varchar)
+' AND (v_book.lb=''10'' OR v_book.lb=''11'') THEN Amount ELSE 0 END) AS ck_'
+cast(@day as varchar)
--当日结存=当日期初(stock_amount)+当日入库(rk_1...) - 当日出库(ck_1.....)
--SELECT @sql=@sql+',SUM( CASE WHEN day(v_book.date)='+cast(@day as varchar) +' AND (v_book.lb=''02'' OR v_book.lb=''01'') THEN Amount ELSE 0 END) AS jc_'+cast(@day as varchar)
Select @day=@day+1
set @sql=@sql+' FROM v_book, stock
WHERE (v_book.fashion_code = stock.fashion_code) AND
(v_book.size_code = stock.fashion_size) AND
stock.tz_year='+cast(@year as varchar)
+' and stock.tz_month='+cast(@month as varchar)+'
GROUP BY stock.tz_year, stock.tz_month, v_book.fashion_code, v_book.size_code,
stock.qc_amount'
exec(@sql)
GO
需要在存储过程中生成每日结存数据。如何实现?
...全文
61 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
am2000 2003-10-19
  • 打赏
  • 举报
回复
leimin(黄山光明顶):怎么将数据插入到临时表?在哪里加错误处理?怎样提高效率?
realgz 2003-10-18
  • 打赏
  • 举报
回复
还是晕菜,这张表吗?
leimin 2003-10-18
  • 打赏
  • 举报
回复
你可以先将数据插入到临时表,然后在进行运算,不过你的SP需要修改:
1.增加错误处理;
2.增加说明;
3.好像效率也不高;
am2000 2003-10-18
  • 打赏
  • 举报
回复
日期 货号 尺寸 数量
2003-10-02 34320 19 6
2003-10-02 34320 20 8
2003-10-02 34320 21 10
2003-10-02 34320 22 10
2003-10-02 34320 23 10
2003-10-02 34320 24 10
2003-10-02 34320 25 8
2003-10-02 34320 26 6
2003-10-02 34320 27 4
2003-10-02 34320 28 4
qdubit 2003-10-18
  • 打赏
  • 举报
回复
关注!
gmlxf 2003-10-17
  • 打赏
  • 举报
回复
那楼主就说清楚点好了。
am2000 2003-10-17
  • 打赏
  • 举报
回复
我要问的是:
一、不同size的货品qc_amount不同,这时qc_amount这样取
--Select @Stock_amount=qc_amount from stock where tz_year=@year --andtz_month=@month不知道对不对;
二、我在写日结存列sql语法时.想表达出:--当日结存=当日期初(stock_amount)+当日入库(rk_1...) - 当日出库(ck_1.....);我想表达出:
SELECT @sql=@sql+'@jc_amount AS jc_'+cast(@day as varchar)
这样的语法,其中@jc_amount是递加的。
zjcxc 2003-10-17
  • 打赏
  • 举报
回复
存储过程没看出什么问题?

楼主要问什么?
am2000 2003-10-17
  • 打赏
  • 举报
回复
没有错误提示!我现在的过程没有日结存列。只有日入库列(rk)和日出库列(ck).我现在想增加一个日结存列。当日结存=前日结存+本日入库 -本日出库
txlicenhe 2003-10-17
  • 打赏
  • 举报
回复
楼主的代码有什么错误提示?
zjcxc 2003-10-17
  • 打赏
  • 举报
回复
贴出表结构及数据,举例说明.

22,209

社区成员

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

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