SQL 存储过程和在存储过程中创建临时表 20
因工作需要帮客户做个报表,但之前我从未写过复杂的存储过程,更没有在存储过程中创建临时表,因此在此发贴请好心的大哥大姐帮忙了。我使用SQL语句可以查出的表如下:仓库代码,仓...
因工作需要帮客户做个报表,但之前我从未写过复杂的存储过程,更没有在存储过程中创建临时表,因此在此发贴请好心的大哥大姐帮忙了。
我使用SQL语句可以查出的表如下:仓库代码,仓库名称,库存资金
比如(001,原材料仓1,10000)(002,原材料仓2,20000)(003,原材料仓3,30000),我的报表要求是参数为会计期间,栏位为你产品名称,未镀,已镀,委外,总计。未镀,已镀和委外的金额根据仓库来区分,比如(HA,1000,2000,0,3000),因为HA已镀仓库为001,未镀仓库为002,无委外,总计=前三之合。请问,我的存储过程该如何写?
CREATE TABLE ##TEMP2(F_CPMC VARCHAR(50),F_WD NUMERIC(18,8),F_YD NUMERIC(18,8),F_WA NUMERIC(18,8),F_TOTAL NUMERIC(18,8))
select A.CKDM,A.CKMC,A.KCJE into ##temp from (
SELECT T1.F_CKDM AS 'CKDM',T3.F_CKMC AS'CKMC',SUM(T1.KCSL*T2.YDPJJ)AS'KCJE'
FROM
(select F_CKDM,F_WLDM,SUM(F_QMSL)AS'KCSL'
from CH_KCZB
WHERE F_KJQJ='200902'
GROUP BY F_CKDM,F_WLDM)AS T1,
(select F_WLDM, SUM(F_QMSL)AS 'QMSL',SUM(F_QMJE)AS 'KCZJ', CASE SUM(F_QMSL) WHEN 0 THEN '0' ELSE SUM(F_QMJE)/SUM(F_QMSL) END AS 'YDPJJ'
from CH_KCZB WHERE F_KJQJ='200902'
and F_COMPID='002'
GROUP BY F_WLDM)AS T2,
KC_CKZD as T3
WHERE T1.F_WLDM=T2.F_WLDM
AND T1.F_CKDM=T3.F_CKDM
and (T1.F_CKDM LIKE 'U10%'OR T1.F_CKDM LIKE 'U20%'OR T1.F_CKDM LIKE 'U40%')
GROUP BY T1.F_CKDM,T3.F_CKMC)as A 展开
我使用SQL语句可以查出的表如下:仓库代码,仓库名称,库存资金
比如(001,原材料仓1,10000)(002,原材料仓2,20000)(003,原材料仓3,30000),我的报表要求是参数为会计期间,栏位为你产品名称,未镀,已镀,委外,总计。未镀,已镀和委外的金额根据仓库来区分,比如(HA,1000,2000,0,3000),因为HA已镀仓库为001,未镀仓库为002,无委外,总计=前三之合。请问,我的存储过程该如何写?
CREATE TABLE ##TEMP2(F_CPMC VARCHAR(50),F_WD NUMERIC(18,8),F_YD NUMERIC(18,8),F_WA NUMERIC(18,8),F_TOTAL NUMERIC(18,8))
select A.CKDM,A.CKMC,A.KCJE into ##temp from (
SELECT T1.F_CKDM AS 'CKDM',T3.F_CKMC AS'CKMC',SUM(T1.KCSL*T2.YDPJJ)AS'KCJE'
FROM
(select F_CKDM,F_WLDM,SUM(F_QMSL)AS'KCSL'
from CH_KCZB
WHERE F_KJQJ='200902'
GROUP BY F_CKDM,F_WLDM)AS T1,
(select F_WLDM, SUM(F_QMSL)AS 'QMSL',SUM(F_QMJE)AS 'KCZJ', CASE SUM(F_QMSL) WHEN 0 THEN '0' ELSE SUM(F_QMJE)/SUM(F_QMSL) END AS 'YDPJJ'
from CH_KCZB WHERE F_KJQJ='200902'
and F_COMPID='002'
GROUP BY F_WLDM)AS T2,
KC_CKZD as T3
WHERE T1.F_WLDM=T2.F_WLDM
AND T1.F_CKDM=T3.F_CKDM
and (T1.F_CKDM LIKE 'U10%'OR T1.F_CKDM LIKE 'U20%'OR T1.F_CKDM LIKE 'U40%')
GROUP BY T1.F_CKDM,T3.F_CKMC)as A 展开
展开全部
把你所有涉及的表自段发上来 你这样怎么给你写啊 ha是哪个表的自段啊 需求明确了给你写 才20分也太少了吧 这个工作量可不小哦 想当初我给人写这么左右的存储过程 拿了500块人民币呢呢 呵呵! 建立临时表只是在表的前面加一个#,其它都舆建立实表相同,建立过程我相信你都知道了,就不用我多说了
Egg:
create table #temp
(id int,
name varchar(50)
)
Egg:
create table #temp
(id int,
name varchar(50)
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把你所有涉及的表自段发上来 你这样怎么给你写啊 ha是哪个表的自段啊 需求明确了给你写 才20分也太少了吧 这个工作量可不小哦 想当初我给人写这么左右的存储过程 拿了500块人民币呢呢 呵呵!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询