用SQL如何实现在表最后一行小计
订单日期订单号品名型号�数量�总价2006-09-01P018013ED16010�4.82200.852006-09-01P0...
订单日期 订单号 品名型号 �数量 �总价
2006-09-01 P018013 ED16010 �4.8 2200.85
2006-09-01 P018013 ED16010 �4.8 2200.85
2006-09-01 P018013 ED16010 �4.8 2200.85
2006-09-01 P018013 ED16010 �4.8 2200.85
只按日期分组,且只对数量小计,怎么忽略其它列
卡姆安的狗:我想用group by with rollup 实现只对订单日期分组,对数量用聚合函数sum,如何忽略其它列的聚合呢,因为不分组的列一定要用聚合函数,但我又不想要全部聚合 展开
2006-09-01 P018013 ED16010 �4.8 2200.85
2006-09-01 P018013 ED16010 �4.8 2200.85
2006-09-01 P018013 ED16010 �4.8 2200.85
2006-09-01 P018013 ED16010 �4.8 2200.85
只按日期分组,且只对数量小计,怎么忽略其它列
卡姆安的狗:我想用group by with rollup 实现只对订单日期分组,对数量用聚合函数sum,如何忽略其它列的聚合呢,因为不分组的列一定要用聚合函数,但我又不想要全部聚合 展开
10个回答
展开全部
用 COMPUTE 和 COMPUTE BY 汇总数据
提供 COMPUTE 和 COMPUTE BY 是为了向后兼容。请改为使用下列组件:
Microsoft® SQL Server™ 2000 Analysis Services 和用于 Analysis Services 的 OLE DB 或 Microsoft ActiveX® 数据对象(多维)(ADO MD) 一起使用。有关更多信息,请参见 Microsoft SQL Server™ 2000 Analysis Services。
ROLLUP 运算符。有关更多信息,请参见用 ROLLUP 汇总数据。
COMPUTE BY 子句使您得以用同一 SELECT 语句既查看明细行,又查看汇总行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。
COMPUTE 子句需要下列信息:
可选的 BY 关键字,该关键字可按对一列计算指定的行聚合。
行聚合函数名称;例如,SUM、AVG、MIN、MAX 或 COUNT。
要对其执行行聚合函数的列。
COMPUTE 生成的结果集
COMPUTE 所生成的汇总值在查询结果中显示为分离的结果集。包括 COMPUTE 子句的查询的结果类似于控制中断报表,即汇总值由指定的组(或称中断)控制的报表。可以为各组生成汇总值,也可以对同一组计算多个聚合函数。
当 COMPUTE 带有可选的 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:
每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。
每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。
当 COMPUTE 不带可选的 BY 子句时,SELECT 语句有两个结果集:
每个组的第一个结果集是包含选择列表信息的所有明细行。
第二个结果集有一行,其中包含 COMPUTE 子句中所指定的聚合函数的合计。
提供 COMPUTE 和 COMPUTE BY 是为了向后兼容。请改为使用下列组件:
Microsoft® SQL Server™ 2000 Analysis Services 和用于 Analysis Services 的 OLE DB 或 Microsoft ActiveX® 数据对象(多维)(ADO MD) 一起使用。有关更多信息,请参见 Microsoft SQL Server™ 2000 Analysis Services。
ROLLUP 运算符。有关更多信息,请参见用 ROLLUP 汇总数据。
COMPUTE BY 子句使您得以用同一 SELECT 语句既查看明细行,又查看汇总行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。
COMPUTE 子句需要下列信息:
可选的 BY 关键字,该关键字可按对一列计算指定的行聚合。
行聚合函数名称;例如,SUM、AVG、MIN、MAX 或 COUNT。
要对其执行行聚合函数的列。
COMPUTE 生成的结果集
COMPUTE 所生成的汇总值在查询结果中显示为分离的结果集。包括 COMPUTE 子句的查询的结果类似于控制中断报表,即汇总值由指定的组(或称中断)控制的报表。可以为各组生成汇总值,也可以对同一组计算多个聚合函数。
当 COMPUTE 带有可选的 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:
每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。
每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。
当 COMPUTE 不带可选的 BY 子句时,SELECT 语句有两个结果集:
每个组的第一个结果集是包含选择列表信息的所有明细行。
第二个结果集有一行,其中包含 COMPUTE 子句中所指定的聚合函数的合计。
参考资料: SQL SERVER 联机丛书
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不明白你的意思,
汇总和明细一起输出的话,结构必需一致,汇总没有的列可以用常数替换,字段别名为你要忽略的列,最后再排序,就得到明细和明细最后一行汇总了.不知道我说明白了没有.
select * from (
select 订单日期,订单号 ,品名型号 ,�数量 ,�总价
from 表名
union all
select 订单日期,'' 订单号,'' 品名型号 ,�sum(数量) 数量汇总,�'' 总价 from 表名
group by 订单日期)
order by 订单日期
汇总和明细一起输出的话,结构必需一致,汇总没有的列可以用常数替换,字段别名为你要忽略的列,最后再排序,就得到明细和明细最后一行汇总了.不知道我说明白了没有.
select * from (
select 订单日期,订单号 ,品名型号 ,�数量 ,�总价
from 表名
union all
select 订单日期,'' 订单号,'' 品名型号 ,�sum(数量) 数量汇总,�'' 总价 from 表名
group by 订单日期)
order by 订单日期
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得楼主的意思是不是要做个报表呀?如果是做报表的话,报表本身的功能就支持分组
根据楼主提出的要求,按日期分组,对数量小计,很好办的~~~我写一个语句 select 订单日期,sum(数量) from 表 group by 订单日期
其实,就可以了~~ 楼主写的问题补充我还是不太明白,如果有什么不对的话,可以把问题在补充完善点,举个例子,我来帮你回答。。。~~
我又看了看,明白楼主的意思了~~
select t0.订单日期,t0.订单号 ,T0.品名型号 ,�T1.数量 T0.总价 from
表名 t0 ,(select 订单日期,sum(数量) from 表 group by 订单日期 ) t1 where t0.订单日期=T1.订单日期
注:t0 是你现在的表,T1是构造的表~~ QQ:329342524
根据楼主提出的要求,按日期分组,对数量小计,很好办的~~~我写一个语句 select 订单日期,sum(数量) from 表 group by 订单日期
其实,就可以了~~ 楼主写的问题补充我还是不太明白,如果有什么不对的话,可以把问题在补充完善点,举个例子,我来帮你回答。。。~~
我又看了看,明白楼主的意思了~~
select t0.订单日期,t0.订单号 ,T0.品名型号 ,�T1.数量 T0.总价 from
表名 t0 ,(select 订单日期,sum(数量) from 表 group by 订单日期 ) t1 where t0.订单日期=T1.订单日期
注:t0 是你现在的表,T1是构造的表~~ QQ:329342524
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from (
select * from dingdanbiao
union
select 订单日期,'z' as 订单号,'z' as 品名型号,sum(数量) as 数量,�sum(总价) as 总价 from dingdanbiao group by 订单日期
) A order by 订单日期,订单号,品名型号
select * from dingdanbiao
union
select 订单日期,'z' as 订单号,'z' as 品名型号,sum(数量) as 数量,�sum(总价) as 总价 from dingdanbiao group by 订单日期
) A order by 订单日期,订单号,品名型号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |