以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  本月与往月统计表问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=21167)

--  作者:sloyy
--  发布时间:2012/7/4 2:17:00
--  本月与往月统计表问题

原始表如图:
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120704020446.png
图片点击可在新窗口打开查看

 

假设本月是4月,我现在想得到这样的统计表:


 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120704020518.png
图片点击可在新窗口打开查看

 

按"姓名"和"超产奖"分组,统计本月以前的"次数","金额"合计及本月的的"次数","金额"合计

 

这个分组统计表该怎么实现?

[此贴子已经被作者于2012-7-4 2:19:00编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/7/4 8:20:00
--  

呵呵,你这两个表都设计好了,何不直接发上来?

否则别人想帮你,还得先设计表,输入测试数据。

尽量方便想帮助你的人,这样才能更快地得到贴心的回复。

 

不过可以先看看:

http://www.foxtable.com/help/topics/0681.htm

 

搞不定,就传文件上来吧,我帮你设置一下。

 

 

 

[此贴子已经被作者于2012-7-4 8:26:10编辑过]

--  作者:sloyy
--  发布时间:2012/7/4 10:39:00
--  

晕 忘记发附件了,先谢谢狐狸爸爸了,我也知道要手工编码,但是没搞懂,我再试试,不行再呼救


--  作者:don
--  发布时间:2012/7/4 10:54:00
--  
select 姓名,超產獎,sum(iif(月份<Month(Now()),次數,0)) As  累計本月以前_次數,sum(iif(月份 <Month(Now()),金額,0)) As 累計本月以前_金額, sum(iif(月份=Month(Now()),次數,0)) As 本月_次數 ,sum(iif(月份=Month(Now()),金額,0)) As 本月_金額  From{表A} GrouP by 姓名,超產獎  UNION select 姓名 &  \'小計\' as  姓名,\'\'  as  超產獎,sum(iif(月份<Month(Now()),次數,0)) As  累計本月以前_次數,sum(iif(月份 <Month(Now()),金額,0)) As 累計本月以前_金額, sum(iif(月份=Month(Now()),次數,0)) As 本月_次數 ,sum(iif(月份=Month(Now()),金額,0)) As 本月_金額  From{表A} GrouP by 姓名  &  \'小計\'
--  作者:sloyy
--  发布时间:2012/7/4 11:55:00
--  

搞定了,就是设置分组条件,把搞好的表发上来,给需要的筒子参考

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("表A")
If e.DataCol.Name = "姓名" And dr.IsNull("姓名") = False Then
    dr("累计4月以前_次数") = dt.Compute("sum(次数)", "[月份] < 4 And [姓名] = \'" & dr("姓名") & "\' AND [超产奖] =" &dr("超产奖")  )
    dr("累计4月以前_金额") = dt.Compute("SUM(金额)", "[月份] < 4 and [姓名] = \'" & dr("姓名") & "\' AND [超产奖] =" &dr("超产奖")  )
    dr("当前4月_次数") = dt.Compute("SUM(次数)",  "[月份] = 4 and [姓名] = \'" & dr("姓名") & "\' AND [超产奖] =" &dr("超产奖")  )
    dr("当前4月_金额") = dt.Compute("SUM(金额)",  "[月份] = 4 and [姓名] = \'" & dr("姓名") & "\' AND [超产奖] =" &dr("超产奖")  )
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3_0704.zip

 

Don 的SQL语句太厉害了,我研究研究,不懂再请教大神


--  作者:sloyy
--  发布时间:2012/7/4 13:23:00
--  

金额 是表达式列,用Don的sql语句老出错,修改后如下:

select 姓名,超产奖,sum(iif(月份<4,次数,0)) As  累计4月以前_次数,sum(iif(月份<4,次数*超产奖,0)) As 累计4月以前_金额, sum(iif(月份=4,次数,0)) As 当前4月_次数 ,sum(iif(月份=4,次数*超产奖,0)) As 当前4月_金额  From {表A} GrouP by 姓名,超产奖

一条SQL语句就搞定了,效果非常好


--  作者:狐狸爸爸
--  发布时间:2012/7/4 14:18:00
--  

呵呵,don的SQL太牛了,我也学习了。

 

图片点击可在新窗口打开查看