如何在这个存储过程中加入一个字段
ALTER PROCEDURE [dbo].[sp_clkc_jxctj]
@StarDate varchar(30) ,
@EndDate varchar(30),
@ckid int
AS
--LastUpdate:2012.08.24 by tonky
DECLARE @StarDate1 varchar(20),
@EndDate1 varchar(20),
@StarDate2 varchar(20),
@EndDate2 varchar(20),
@oldym varchar(20),
@StarDate_1 datetime,
@TempDate datetime,
@yy int,
@mm int,
@dd int,
@flag int ,
@TJYM varchar(10),
@Billtype int
select @StarDate= convert(varchar(10), cast(@StarDate as datetime) ,120)
select @EndDate= convert(varchar(10), cast(@EndDate as datetime) ,120)
select @Billtype=1,@flag=0
select @StarDate_1=cast(@StarDate as datetime)
select @yy=DATEPART(year,@StarDate_1)
select @mm=DATEPART(month,@StarDate_1)
select @dd=DATEPART(day,@StarDate_1)
select @StarDate1=cast(@yy as varchar(4))+'-'+cast(@mm as varchar(2))+'-'+'01'
select @TempDate=cast(@StarDate1 as datetime)-1
select @oldym=DATEPART(year,@TempDate)*100 +DATEPART(month,@TempDate) -- 年份必须乘以100
select @TempDate=cast(cast(@StarDate as datetime)-1 as varchar(20))
select @EndDate1=cast(DATEPART(year,@TempDate) as varchar(4))+'-'+cast(DATEPART(month,@TempDate) as varchar(4))+'-'+cast(DATEPART(day,@TempDate) as varchar(4))
select @StarDate2=@StarDate
select @EndDate2=@EndDate
SELECT @TJYM=TJYM, --=201107
@StarDate1=BeginDate
FROM tkPeriodCo
WHERE Companyid=0 and PeriodID=2 and ckid=@ckid and
@StarDate between BeginDate and EndDate
--求上一个期间号
select @TempDate=DATEADD(month, -1, @StarDate)
SELECT @oldym=TJYM --=201106
FROM tkPeriodCo
WHERE Companyid=0 and PeriodID=2 and ckid=@ckid and
@TempDate between BeginDate and EndDate
/*
SELECT @nstate=nstate,
@Bdate=Begindate,
@Edate=Enddate
FROM tkPeriodCo
where Companyid=0 and PeriodID=2 and ckid=@ckid and TJYM=@TJYM
*/
-- select @oldym=DATEPART(yyyy,@StarDate_1)
--清空中间表
-- DELETE clkc_jxctj
--建临时表
CREATE TABLE #Clkc_jxctj_cl
(
goodsid int,
Billtype int,
ddspec varchar(100),
ysid int,
orli varchar(100),
ckid int,
ckkw varchar(100),
batno varchar(100),
lccd numeric(18,4),
lchd numeric(18,4),
qcQty numeric(18,4),
qcAmt money,
qclcwt numeric(18,4),
rkQty numeric(18,4),
rkAmt money,
rklcwt numeric(18,4),
tjQty numeric(18,4),
tjAmt money,
tjlcwt numeric(18,4),
ckQty numeric(18,4),
ckAmt money,
cklcwt numeric(18,4),
jcQty numeric(18,4),
jcAmt money,
jclcwt numeric(18,4)
)
declare @SQL VarChar(2000)
/*增加上月结存数量到中间表,作为期初数*/
INSERT INTO #Clkc_jxctj_cl(goodsid,Billtype,ddspec,ysid,orli,ckid,ckkw,batno,lccd,lchd,
qcQty,qcAmt,qclcwt, rkQty, rkAmt,rklcwt, tjQty, tjAmt,tjlcwt, ckQty, ckAmt,cklcwt,jcQty, jcAmt,jclcwt)
SELECT goodsid,Billtype,ddspec,ysid,orli,ckid,ckkw,batno,lccd,lchd,
qty AS qcQty,
amt AS qcAmt,
lcwt AS qclcwt,
0 as rkQty, 0 as rkAmt,0 as rklcwt,
0 as tjQty, 0 as tjAmt,0 as tjlcwt,
0 as ckQty, 0 as ckAmt,0 as cklcwt,
0 as jcQty, 0 as jcAmt,0 as jclcwt
FROM clkc_jcit
WHERE (tjym=@oldym )and (ckid=@ckid)
and (Billtype=@Billtype)
INSERT INTO #Clkc_jxctj_cl(goodsid,Billtype,ddspec,ysid,orli,ckid,ckkw,batno,lccd,lchd,
qcQty,qcAmt,qclcwt, rkQty, rkAmt,rklcwt, tjQty, tjAmt,tjlcwt, ckQty, ckAmt,cklcwt,jcQty, jcAmt,jclcwt)
SELECT goodsid,Billtype,ddspec,ysid,orli,ckid,ckkw,batno,lccd,lchd,
(rkQty + tjQty - ckQty) AS qcQty,
(rkAmt + tjAmt - ckAmt) AS qcAmt,
(rklcwt + tjlcwt - cklcwt) AS qcAmt,
0 as rkQty, 0 as rkAmt,0 as rklcwt,
0 as tjQty, 0 as tjAmt,0 as tjlcwt,
0 as ckQty, 0 as ckAmt,0 as cklcwt,
0 as jcQty, 0 as jcAmt,0 as jclcwt
FROM vClkc_jxctjmx
WHERE (dzrq >=@StarDate1 )and(dzrq<=@EndDate1) and (ckid=@ckid)and (Billtype=@Billtype)
--增加查询日期段内进出明细到中间表
INSERT INTO #Clkc_jxctj_cl(goodsid,Billtype,ddspec,ysid,orli,ckid,ckkw,batno,lccd,lchd,
qcQty,qcAmt,qclcwt, rkQty, rkAmt,rklcwt, tjQty, tjAmt,tjlcwt, ckQty, ckAmt,cklcwt,jcQty, jcAmt,jclcwt)
SELECT goodsid,Billtype,ddspec,ysid,orli,ckid,ckkw,batno,lccd,lchd,
0 as qcQty, 0 as qcAmt,0 as qclcwt,
rkQty, rkAmt,rklcwt,
tjQty, tjAmt,tjlcwt,
ckQty, ckAmt,cklcwt,
0 as jcQty, 0 as jcAmt,0 as jclcwt
FROM vClkc_jxctjmx
WHERE (dzrq between @StarDate2 and @EndDate2) and (ckid=@ckid)and (Billtype=@Billtype)
--1.按单据类别+仓库+品名
--2.按仓库+品名
--3.按品名
--4.按大类
--5.按中类
IF @flag=0 --
BEGIN
SELECT A.ckid,A.goodsid,B.goodsdm, B.goodsmc,B.spec, D.ckName, B.unit, C.lbName0, C.lbName1,
C.lbName2, A.ddspec, A.batno,A.ckkw,A.orli,A.lccd,A.lchd,
sum(A.qcQty) as qcQty, sum(A.qcAmt) as qcAmt, sum(A.qclcwt) as qclcwt,
Round(CASE sum(A.qcQty) WHEN 0 THEN 0 ELSE sum(A.qcAmt)/ sum(A.qcQty) END,2) AS qcprice,
sum(A.rkQty) as rkQty, sum(A.rkAmt) as rkAmt, sum(A.rklcwt) as rklcwt,
sum(A.tjQty) as tjQty, sum(A.tjAmt) as tjAmt,sum(A.tjlcwt) as tjlcwt,
sum(A.ckQty) as ckQty, sum(A.ckAmt) as ckAmt,sum(A.cklcwt) as cklcwt,
sum(A.qcQty+A.rkQty+A.tjQty-A.ckQty) as jcQty,
sum(A.qcAmt+A.rkAmt+A.tjAmt-A.ckAmt) as jcAmt,
sum(A.qclcwt+A.rklcwt+A.tjlcwt-A.cklcwt) as jclcwt,
Round(CASE sum(A.qcQty+A.rkQty+A.tjQty-A.ckQty) WHEN 0 THEN 0 ELSE sum(A.qcAmt+A.rkAmt+A.tjAmt-A.ckAmt)/ sum(A.qcQty+A.rkQty+A.tjQty-A.ckQty) END,2) AS jcprice
FROM #Clkc_jxctj_cl A left outer join zd_goods B on A.goodsid=B.goodsid
left outer join zd_goodslb C on B.goodslbid=C.goodslbid
left outer join zd_ck D on A.ckid=D.ckid
left outer join lyzd_lcys E on A.ysid=E.ysid
GROUP BY A.ckid,A.goodsid,B.goodsdm, B.goodsmc,B.spec, D.ckName, B.unit, C.lbName0, C.lbName1,
C.lbName2, A.ddspec,A.batno,A.ckkw,A.orli,A.lccd,A.lchd
HAVING not(sum(A.qcQty)=0 and sum(A.rkQty)=0 and
sum(A.tjQty)=0 and sum(A.ckQty)=0 and sum(A.jcQty)=0 and
sum(A.qcAmt)=0 and sum(A.rkAmt)=0 and
sum(A.tjAmt)=0 and sum(A.ckAmt)=0 and sum(A.jcAmt)=0 and
sum(A.qclcwt)=0 and sum(A.rklcwt)=0 and
sum(A.tjlcwt)=0 and sum(A.cklcwt)=0 and sum(A.jclcwt)=0 )
ORDER BY D.ckName,B.goodsdm
END
--删除临时表
Drop TABLE #Clkc_jxctj_cl
要加的表名:lyzd_lcxh 主键:xhid 字段:xhdm
...全文
相关推荐
掌握SQL Server存储过程的命名标准
掌握SQL Server存储过程的命名标准
高效的分页存储过程.txt
存储过程与页面调用如下: CREATE PROCEDURE search_sp @tblName varchar(255), -- 表名 @strGetFields varchar(1000) =
,sql2005万能分页存储过程
sql2000万能分页存储过程,sql2005万能分页存储过程
Oracle通用数据库存储过程代码--高效分页存储过程
Oracle通用数据库存储过程代码--高效分页存储过程,只需简单的修改即可使用,方便易懂!
SQL通用存储过程分页,支持多表联合
以前用.net写分页存储过程时老是一张表就要写一个procedure.很忙烦.后来有空就整合了一下,做了一个通用的sql分页存储,支持多表联合查询分页.写的不好的地方,希望大鸟们多多指导.使的查询速度更快.


其他数据库
