如何在这个存储过程中加入一个字段

Q晴朗Q Q晴朗Q 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区






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
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
Q晴朗Q
其他数据库 2,208 成员 9,519 内容