当前位置: 代码迷 >> ASP.NET >> 各位,关于小计小计再总计的报表`
  详细解决方案

各位,关于小计小计再总计的报表`

热度:9413   发布时间:2013-02-25 00:00:00.0
各位大虾,救命啊,关于小计小计再总计的报表``

日期 车号 货物编号 货物名称 现付 提付 电话
2007/10/8 K123 aaa111 XO 1000 0 5849568
2007/10/8 K123 aaa222 篮球 0 200 2849598
小计 1000 200  
2007/10/8 D333 aaa333 自行车 0 200 5946785
2007/10/8 D333 aaa555 苹果 0 100 6584795
小计 0 300  
2007/10/8 F555 aaa598 法拉里 100 0 3359468
2007/10/8 F555 aaa123 科比战靴 0 2500 3462159
小计 100 2500
总计 1100 3000  

如上所表达的样式。当天 发车 三 辆 , 每辆车各有自己的货物。对每辆车的物品进行 合计,也就是小计。
在最后进行 总计,也就是 三辆车所有物品 价钱的总计。(现付,提付 是付款的方式)
谢谢帮忙拉``谢谢!
听说 嵌套GridView可以实现。不知道是不是。
我试图用SQL语句直接搞顶,但是失败了。如下:
select case when (GROUPING(bb.odata) = 1) THEN bb.odata else ISNULL(bb.odata,'UNKNOWN')end as '发货日期',
case when (GROUPING(bb.onumber) = 1) THEN '合计' else ISNULL(bb.onumber,'UNKNOWN')end as '车号',
case when (grouping(c_goodsId)=1) then '合计' else isnull(c_goodsId,'unknown')end as '货物编号',
case when (grouping(c_goodsName)=1)then '合计' else isnull(c_goodsName,'unknown')end as '货物名称',
sum(c_payback)from consign as aa inner join consignment as bb on aa.cid=bb.cid 
group by bb.odata,bb.onumber,c_goodsId,c_goodsName with Rollup

------解决方案--------------------------------------------------------
参考:
http://dotnet.aspx.cc/article/54f4c732-aae2-4135-fb1b-7b4b613baa33/read.aspx
------解决方案--------------------------------------------------------
报表一般都会提供小计总计的功能,一般不是在数据上处理,而是在报表上设计。
------解决方案--------------------------------------------------------
如果想在页面上实现,可以采取 Datalist 双嵌套的方式实现
------解决方案--------------------------------------------------------
可以在Datalist绑定数据时通过增加行的方式实现。
------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
SQL code
--创建环境drop table ttcreate table tt(mydate datetime,busNum varchar(10),goodsNum varchar(10),goodsName varchar(10),XF int,TF int,tel varchar(10))    insert into tt  select '2007/10/8','K123','aaa111','XO',1000,0,'5849568'              union select '2007/10/8','K123','aaa222','篮球',0,200,'2849598'              union select '2007/10/8','D333','aaa333','自行车',0,200,'5946785'              union select '2007/10/8','D333','aaa555','苹果',0,100,'6584795'              union select '2007/10/8','F555','aaa598','法拉里',100,0,'3359468'              union select '2007/10/8','F555','aaa123','科比战靴',0,2500,'3462159'--初始数据select * from tt日期                       车号   货物编号    货物名称 现付     提付     电话  ------------------------------------------------------------------------2007-10-08 00:00:00.000    D333    aaa333    自行车    0    200    59467852007-10-08 00:00:00.000    D333    aaa555    苹果    0    100    65847952007-10-08 00:00:00.000    F555    aaa123    科比战靴    0    2500    34621592007-10-08 00:00:00.000    F555    aaa598    法拉里    100    0    33594682007-10-08 00:00:00.000    K123    aaa111    XO    1000    0    58495682007-10-08 00:00:00.000    K123    aaa222    篮球    0    200    2849598--执行SQL语句select a.mydate,a.busNum,a.goodsNum,a.goodsName,a.XF,a.TF,a.tel from(select convert(varchar(10),mydate,111) as mydate,busNum,goodsNum,goodsName,XF,TF,tel,1 as myTemp,busNum as bn from tt unionselect '小计',null,null,null,sum(XF),sum(TF),null,2 as myTemp,max(busNum) as bn from tt group by busNumunionselect '总计',null,null,null,sum(XF),sum(TF),null,3 as myTemp,max(busNum) as bn from tt) a order by a.bn,a.myTemp--查询结果日期              车号   货物编号    货物名称 现付     提付     电话  ------------------------------------------------------------------------2007/10/08    D333    aaa333    自行车    0    200    59467852007/10/08    D333    aaa555    苹果    0    100    6584795小计             NULL    NULL    NULL    0    300    NULL2007/10/08    F555    aaa123    科比战靴    0    2500    34621592007/10/08    F555    aaa598    法拉里    100    0    3359468小计             NULL    NULL    NULL    100    2500    NULL2007/10/08    K123    aaa111    XO    1000    0    58495682007/10/08    K123    aaa222    篮球    0    200    2849598小计             NULL    NULL    NULL    1000    200    NULL总计             NULL    NULL    NULL    1100    3000    NULL--如果你不想显示NULL,可以执行以下代码select a.mydate,isnull(a.busNum,''),isnull(a.goodsNum,''),isnull(a.goodsName,''),a.XF,a.TF,isnull(a.tel,'') from(select convert(varchar(10),mydate,111) as mydate,busNum,goodsNum,goodsName,XF,TF,tel,1 as myTemp,busNum as bn from tt unionselect '小计',null,null,null,sum(XF),sum(TF),null,2 as myTemp,max(busNum) as bn from tt group by busNumunionselect '总计',null,null,null,sum(XF),sum(TF),null,3 as myTemp,max(busNum) as bn from tt) a order by a.bn,a.myTemp--查询结果日期              车号   货物编号    货物名称 现付     提付     电话  ------------------------------------------------------------------------2007/10/08    D333    aaa333    自行车    0    200    59467852007/10/08    D333    aaa555    苹果    0    100    6584795小计                         0    300    2007/10/08    F555    aaa123    科比战靴    0    2500    34621592007/10/08    F555    aaa598    法拉里    100    0    3359468小计                         100    2500    2007/10/08    K123    aaa111    XO    1000    0    58495682007/10/08    K123    aaa222    篮球    0    200    2849598小计                         1000    200    总计                         1100    3000
  相关解决方案