| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:请教大家一个统计的怪问题,谢谢
只看楼主 加入收藏
qinyun
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-6-6
结帖率:20%
收藏
已结贴  问题点数:10 回复次数:3 
请教大家一个统计的怪问题,谢谢
我在做一个统计时,统计的数据出现一些怪问题,请大家帮分析一下,谢谢
图片附件: 游客没有浏览图片的权限,请 登录注册



问题如下图所示:付款时每单位只有一条时,统计数据正常
每单位每超过一条付款记录时,统计数据中应收项便会增加1000元,其它正常

图片附件: 游客没有浏览图片的权限,请 登录注册


程序代码:
SELECT WLDW.Dw_Name AS 单位名称, WLDW.Dw_Name AS 科室名称,
      SUM(YSZK.Hw_sum) AS 应收金额, SUM(FKJL.Fk_money) AS 付款金额,
      SUM(YSZK.Hw_sum) + SUM(FKJL.Fk_money) AS 欠款金额, WLDW.root,
      WLDW.Dw_File, WLDW.Dw_Pinyin
FROM WLDW RIGHT OUTER JOIN
      YSZK ON WLDW.Dw_Id = YSZK.Dw_Id LEFT OUTER JOIN
      FKJL ON YSZK.Dj_Id = FKJL.Dj_id
GROUP BY WLDW.Dw_Name, WLDW.root, WLDW.Dw_File, WLDW.Dw_Pinyin
搜索更多相关主题的帖子: 统计 
2011-04-04 16:39
红色警戒
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:19
帖 子:444
专家分:2967
注 册:2005-11-20
收藏
得分:7 
先去掉group看看,是不是记录有多的。

2011-04-04 22:08
qinyun
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-6-6
收藏
得分:0 
回复 2楼 红色警戒
程序代码:
select 单位,科室,金额
from
(
select 单位,科室,SUM(金额) as 金额
from
(
select 单位,
case when 科室 like 'A%' then 'A'
     when 科室 like 'B%' then 'B'
end
as 科室,
amount
from tb
) x
group by 单位,科室
union all
select 单位,科室,SUM(金额) as 金额
from tb
where 单位!=科室
group by 单位,科室
)y
order by 单位
2011-04-05 13:02
qinyun
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2008-6-6
收藏
得分:0 
程序代码:
/*单位信息表         为了测试直规特加上   说明   字段       */ 
DECLARE @wldw TABLE (单位ID int, 单位名称 nvarchar(11), 科室名称 nvarchar(10), root int, 档案文件 nvarchar(10), 单位拼音 nvarchar(10),说明 nvarchar(50))

INSERT @wldw VALUES(1,'市政府','市政府','0','A001','SZF','父单位')
INSERT @wldw VALUES(2,'市政府','机要科','1','A001','SZF','')
INSERT @wldw VALUES(3,'市政府','秘书科','1','A001','SZF','')
INSERT @wldw VALUES(4,'市政府','办公室','1','A001','SZF','')
INSERT @wldw VALUES(5,'市财政','市财政','0','B001','SCZ','父单位')
INSERT @wldw VALUES(6,'市财政','办公室','1','B001','SCZ','')
INSERT @wldw VALUES(7,'市财政','农财科','1','B001','SCZ','')
INSERT @wldw VALUES(8,'市财政','采购科','1','B001','SCZ','')
INSERT @wldw VALUES(9,'市地税','市地税','0','C001','SDS','父单位')
INSERT @wldw VALUES(10,'市地税','财务科','1','C001','SDS','')
INSERT @wldw VALUES(11,'市地税','信息科','1','C001','SDS','')



/*各单位产生应收信息表         为了测试直规特加上  说明   字段       */      
DECLARE @YSZK TABLE (FID int,单据编号 nvarchar(11), 单位ID int, 应收金额 money,说明 nvarchar(50))

INSERT @YSZK VALUES(1,'20110403001','2',1000,'市政府-机要科   应收帐单')
INSERT @YSZK VALUES(2,'20110403002','2',1000,'市政府-机要科   应收帐单')
INSERT @YSZK VALUES(3,'20110403003','3',1000,'市政府-秘书科   应收帐单')
INSERT @YSZK VALUES(4,'20110403004','3',1000,'市政府-秘书科   应收帐单')
INSERT @YSZK VALUES(5,'20110403005','6',1000,'市财政-办公室   应收帐单')
INSERT @YSZK VALUES(6,'20110403006','7',1000,'市财政-农财科   应收帐单')
INSERT @YSZK VALUES(7,'20110403007','8',1000,'市财政-采购科   应收帐单')
INSERT @YSZK VALUES(8,'20110403008','10',1000,'市地税-财务科   应收帐单')
INSERT @YSZK VALUES(8,'20110403009','10',1000,'市地税-财务科   应收帐单')
INSERT @YSZK VALUES(8,'20110403010','11',1000,'市地税-信息科   应收帐单')


/*各单位付款记录信息表         为了测试直规特加上  说明   字段       */  
DECLARE @FKJL TABLE (FID int,单据编号 nvarchar(11), 付款金额 money,说明 nvarchar(50))

INSERT @FKJL VALUES(1,'20110403001',-100,'市政府-机要科   付款帐单')
INSERT @FKJL VALUES(2,'20110403001',-100,'市政府-机要科   付款帐单')
INSERT @FKJL VALUES(3,'20110403004',-100,'市政府-秘书科   付款帐单')
INSERT @FKJL VALUES(4,'20110403004',-100,'市政府-秘书科   付款帐单')
INSERT @FKJL VALUES(5,'20110403008',-100,'市地税-财务科   付款帐单')
INSERT @FKJL VALUES(6,'20110403010',-100,'市地税-信息科   付款帐单')
INSERT @FKJL VALUES(7,'20110403010',-100,'市地税-信息科   付款帐单')
INSERT @FKJL VALUES(8,'20110403006',-100,'市财政-农财科   付款帐单')
INSERT @FKJL VALUES(9,'20110403006',-100,'市财政-农财科   付款帐单')



/*需要的最终结果

单位序号    单位名称    科室名称    应收款    已付款    欠款余额    关系    档案文件    拼音    关系说明
1    市政府    市政府    4000    -400    3600    0    A001    SZF    父单位
2    市政府    机要科    2000    -200    1800    1    A001    SZF    子
3    市政府    秘书科    2000    -200    1800    1    A001    SZF    子
4    市政府    办公室    0    0        1    A001    SZF    子
5    市财政    市财政    3000    -200    2800    0    B001    SCZ    父单位
6    市财政    办公室    1000    0    1000    1    B001    SCZ    子
7    市财政    农财科    1000    -200    800    1    B001    SCZ    子
8    市财政    采购科    1000    0    1000    1    B001    SCZ    子
9    市地税    市地税    3000    -300    2700    0    C001    SDS    父单位
10    市地税    财务科    2000    -100    1900    1    C001    SDS    子
11    市地税    信息科    1000    -200    800    1    C001    SDS    子

*/


SELECT d.*, w.单位名称, w.科室名称
FROM @WLDW w INNER JOIN
          (SELECT b.单位ID, SUM(b.应收金额) AS lll, SUM(isnull(a.付款金额, 0)) AS yfk
         FROM @yszk b LEFT OUTER JOIN
                   (SELECT 单据编号, SUM(isnull(付款金额, 0)) AS 付款金额
                  FROM @fkjl
                  GROUP BY 单据编号) a ON b.单据编号 = a.单据编号
         GROUP BY b.单位ID) d ON w.单位ID = d.单位ID

2011-04-05 13:03
快速回复:请教大家一个统计的怪问题,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052159 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved