会员名称: 登录密码: (找回密码) 登录 会员注册

分类

问题
上个主题 下个主题
主题:求救!SQL物料收发明细表,帮忙修改下SQL
avatar
03zhuhaowen
IT 行业
Ta擅长:
本周回答(0),本月回答(0)
发贴时间:2008-5-5 15:26:35   完成时间: 2008-5-8 9:37:11
赠分:30      回答:6   已经到期    
小弟编了段代码:
set nocount on
SELECT t1.FDate AS '日期',
t1.FBillNo as '单据号码',
t3.FNumber as '物料代码',
t3.FName AS '物料名称',
t3.FModel AS '规格型号',
t4.FName AS '单位',
CASE WHEN t1.FTranType in (1,2,5,10,40,101,102)Or (t1.Ftrantype=100 And t1.FBillTypeID=12542) THEN t2.FQty ELSE 0 END AS '收入数量',
CASE WHEN t1.FTranType in (21,24,28,29,43)Or (t1.Ftrantype=100 And t1.FBillTypeID=12541) THEN t2.FQty ELSE 0 END AS '发出数量'

FROM ICStockBill t1,ICStockBillentry t2,t_ICItem t3,t_MeasureUnit t4
WHERE t1.FInterID=t2.FInterID
AND t2.FItemID=t3.FItemID
AND t4.FItemID=t3.FUnitID
AND t4.FStandard=1
AND t1.FDate>='2008-01-01'
and t1.FDateand t1.FStatus>0 and t1.FCancelLation = 0
order by t3.FNumber,t1.FDate

能得到正确的数据,现在我想先添加“期初结存数量”FBegQty,请问该怎么添加?
我是这样操作的,我添加ICInvBal表中FBegQty,得到如下代码
set nocount on
SELECT t1.FDate AS '日期',
t1.FBillNo as '单据号码',

t3.FNumber as '物料代码',
t3.FName AS '物料名称',
t3.FModel AS '规格型号',
t4.FName AS '单位',

CASE WHEN t1.FTranType in (1,2,5,10,40,101,102)Or (t1.Ftrantype=100 And t1.FBillTypeID=12542) THEN t2.FQty ELSE 0 END AS '收入数量',
CASE WHEN t1.FTranType in (21,24,28,29,43)Or (t1.Ftrantype=100 And t1.FBillTypeID=12541) THEN t2.FQty ELSE 0 END AS '发出数量',
SUM( t5.FBegQty) AS '期初结存数量'
FROM ICStockBill t1,ICStockBillentry t2,t_ICItem t3,t_MeasureUnit t4,ICInvBal t5
WHERE t1.FInterID=t2.FInterID
AND t2.FItemID=t3.FItemID
AND t4.FItemID=t3.FUnitID
AND t3.FItemID=t5.FItemID
AND t4.FStandard=1

AND t1.FDate>='2008-01-01'
and t1.FDateand t1.FDateand t1.FStatus>0 and t1.FCancelLation = 0
group by t1.FDate,t1.FBillNo,t3.FNumber,t3.FName,t3.FModel,t4.FName,t1.FTranType,t2.FQty,t2.FAmount,t3.FQtyDecimal,t3.FPriceDecimal,t1.FBillTypeID
order by t3.FNumber,t1.FDate
这样我得到的数据又不正确。
请大家帮下我。
修改时间:2008-5-5 15:27:29
avatar
qfmiao
IT 行业
Ta擅长:
K/3 BOS(8),插件设计(5) 本周回答(1),本月回答(1)
回答时间:2008-5-6 9:38:16
不好意思,看了 明细表 ~~ 这样的话,你先把 期初 的数据SUM 筛选出来,然后再 组合你的 表格中!简单模式
set nocount on
SELECT t1.FDate AS '日期',
t1.FBillNo as '单据号码',

t3.FNumber as '物料代码',
t3.FName AS '物料名称',
t3.FModel AS '规格型号',
t4.FName AS '单位',
CASE WHEN t1.FTranType in (1,2,5,10,40,101,102)Or (t1.Ftrantype=100 And t1.FBillTypeID=12542) THEN t2.FQty ELSE 0 END AS '收入数量',
CASE WHEN t1.FTranType in (21,24,28,29,43)Or (t1.Ftrantype=100 And t1.FBillTypeID=12541) THEN t2.FQty ELSE 0 END AS '发出数量',
t5.FBegQty AS '期初结存数量'
FROM ICStockBill t1,ICStockBillentry t2,t_ICItem t3,t_MeasureUnit t4,ICInvBal t5
WHERE t1.FInterID=t2.FInterID
AND t2.FItemID=t3.FItemID
AND t4.FItemID=t3.FUnitID
AND t3.FItemID=t5.FItemID
AND t4.FStandard=1

AND t1.FDate>='2008-01-01'
and t1.FDateand t1.FDateand t1.FStatus>0 and t1.FCancelLation = 0
group by t1.FDate,t1.FBillNo,t3.FNumber,t3.FName,t3.FModel,t4.FName,t1.FTranType,t2.FQty,t2.FAmount,t3.FQtyDecimal,t3.FPriceDecimal,t1.FBillTypeID
order by t3.FNumber,t1.FDate


select SUM( t5.FBegQty) AS '期初结存数量' from ICInvBal t5 group by 然后用内嵌之类的方法实现


只是个实现思想,代码不规范的,就是你前面没加 期初的都对的,然后 后面是联合期初的数据,其实是个重复记录匹配,因为期初都是一样的,然后后面考虑的 期末结存,还需要加个字段,期初加上 收入-发出的~


如说的不详细,忘谅解~ K3做的只是简单表格,其实你这个 日期也不能自己过滤的,不过总体而言,你的明细表并不是很复杂,只要弄清表格数据就可以了~
纯粹个人意见~
发文者评价: (共获积分:30
 
网友评价: 100%       0%     (目前有 2 人评价)
你的评价:
其他回答
avatar
qfmiao
IT 行业
Ta擅长:
K/3 BOS(8),插件设计(5) 本周回答(1),本月回答(1)
回答时间:2008-5-5 16:04:58
t5是 合计,好似前面字段不是合计,条目数量不一样,应该会有重复的条目!
纯粹个人意见~
 
avatar
qfmiao
IT 行业
Ta擅长:
K/3 BOS(8),插件设计(5) 本周回答(1),本月回答(1)
回答时间:2008-5-5 16:52:15
物料明细可以选择仓库筛选的~ T5 表,和你 T2 表,选取条目,分析下 表结构吧! 我觉得~ 其实你要组合这两个表,组合时候应该条目筛选没考虑好! 你把T5 表 合计了,T2表没有合计吧
纯粹个人意见~
 
avatar
百色小陆
IT 行业
Ta擅长:
金蝶KIS(19),小企业管理(11) 本周回答(0),本月回答(0)
回答时间:2008-5-5 19:41:01
一、你group by不要加入日期。。这样子物料就会重复出现,必须转换期间
二、你group by 也不可以加入单据号,这样子也会物料重复出现,,考虑撤掉吧.毕竟你这种报表不会一种商品分十行左右显示吧.
三、简化你的group by 后面的项目。不用加入那么多起不了作用的列值.
四、你的收入数量,发出数量请加上sum
五、如果要分时间查看的话,要注意fdate的值外还要注意icinvbal里面的Fperiod期间值这样子才可以对应


完毕!!

金蝶软件应用交流群
①:12888330
②:1811263
③:7786215
④:44077482
 
avatar
qfmiao
IT 行业
Ta擅长:
K/3 BOS(8),插件设计(5) 本周回答(1),本月回答(1)
回答时间:2008-5-6 9:22:21
是不是猜测是 你 的 期初和之类的 是 汇总行,那么需要 其它形式,不是在一起 SUM ~GROUP BY !
纯粹个人意见~
 
avatar
qfmiao
IT 行业
Ta擅长:
K/3 BOS(8),插件设计(5) 本周回答(1),本月回答(1)
回答时间:2008-5-6 10:32:14
好似前面你编了个 改写数据库,插入单据的,数据查询方式,觉得你摆平这个查询应该没啥问题的!
纯粹个人意见~
View as RSS news feed in XML
© 2008 金蝶国际软件集团 版权所有  Version:3.2.2008.27643 页面时间:114.2822Ms