求和的问题

keardy 2003-05-09 11:04:23
有一个商品目录表,里面有商品代号,价格等关于属性的字段
另外有个销售明细表,里面有商品代号,成交价格,时间等字段
现在我要做对销售明细表的查询
select *之后,会有商品代号,对应的商品属性等,
但是我想如果我想在得到查询结果的同时,能同时对查询的某些列进行求和
又怎么做呢?如,某个商品的数量和其销售金额等同时与商品销售列表显示(最后一行)?
谢谢!!!
...全文
11 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pengdali 2003-05-10
select *,(select sum(数量) from 商品目录表 where 商品代号=别名.商品代号) as 列别名 from 商品目录表 as 别名
回复
select 商品代号,数量, 成交价格*数量 销售金额,0 as id from 销售明细表 where 商品代号 = ...
union all
select 商品代号+'合计',sum(数量), sum(成交价格*数量),1 from 销售明细表 where 商品代号 = ...
order by id
回复
psxfghost 2003-05-09
只对其中一种具体商品进行操作,多种的话相应地进行分组就可以了,try:
select a.商品代号,a.成交价格,a.时间 from 销售明细表 a,商品目录表 b where a.商品代号=b.商品代号 and a.商品代号='具体商品代号' union select 商品代号,sum(成交价格) as 成交价格,时间 where 商品代号='具体商品代号'

^_^
回复
blactte 2003-05-09
select productid,price from product
compute price

生成合计作为附加的汇总列出现在结果集的最后。当与 BY 一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总。可在同一查询内指定 COMPUTE BY 和 COMPUTE。

语法
[ COMPUTE
{ { AVG | COUNT | MAX | MIN | STDEV | STDEVP
| VAR | VARP | SUM }
( expression ) } [ ,...n ]
[ BY expression [ ,...n ] ]

参数
AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM

指定要执行的聚合。下面是 COMPUTE 子句使用的行聚合函数:

行聚合函数 结果
AVG 数字表达式中所有值的平均值
COUNT 选定的行数
MAX 表达式中的最高值
MIN 表达式中的最低值
STDEV 表达式中所有值的统计标准偏差
STDEVP 表达式中所有值的填充统计标准偏差
SUM 数字表达式中所有值的和
VAR 表达式中所有值的统计方差
VARP 表达式中所有值的填充统计方差


没有等同于 COUNT(*) 的函数。若要查找由 GROUP BY 和 COUNT(*) 生成的汇总信息,请使用不带 BY 的 COMPUTE 子句。

这些函数忽略空值。

如果是用 COPPUT 子句指定的行聚合函数,则不允许它们使用 DISTINCT 关键字。

当添加或平均整数数据时,即使列的数据类型为 smallint 或 tinyint,SQL Server 也将结果视为 int 值。有关返回添加数据或平均数据的类型的更多信息,请参见 SUM 和 AVG。



说明 为减少在 ODBC 和 DB-Library 程序中溢出错误的可能性,请将平均或汇总结果的所有变量声明均作为数据类型 int。


( expression )

表达式,如对其执行计算的列名。expression 必须出现在选择列表中,并且必须将其指定为与选择列表中的某个表达式完全一样。在 expression 内不能使用在选择列表中指定的列的别名。



说明 在 COMPUTE 或 COMPUTE BY 子句中,不能指定 ntext、text 和 image 数据类型。


BY expression

在结果集内生成控制中断和分类汇总。expression 是 order_by_expression 在相关 ORDER BY 子句中的精确复本。一般情况下,这是列名或列的别名。可指定多个表达式。在 BY 后列出多个表达式可将一个组分成子组并在每个分组级别上应用聚合函数。

如果使用 COMPUTE BY,则必须也使用 ORDER BY 子句。表达式必须与在 QRDER BY 后列出的子句相同或是其子集,并且必须按相同的序列。例如,如果 ORDER BY 子句是:

ORDER BY a, b, c

则 COMPUTE子句可以是下面的任意一个(或全部):

COMPUTE BY a, b, c
COMPUTE BY a, b
COMPUTE BY a



说明 在带 COMPUTE 子句的 SELECT 语句中,选择列表中的列顺序替代 COMPUTE 子句中的聚合函数顺序。ODBC 和 DB-library 程序员必须知道这种顺序要求,以将聚合函数结果放在正确的位置。


由于包含 COMPUTE 的语句生成表并且这些表的汇总结果不存储在数据库中,因此在 SELECT INTO 语句中不能使用 COMPUTE。因而,任何由 COMPUTE 生成的计算结果不出现在用 SELECT INTO 语句创建的新表内。

当 SELECT 语句是 DECLARE CURSOR 语句的一部分时,不能使用 COMPUTE 子句。

回复
sasacat 2003-05-09
如果你用的DELPHI的话,我知道有大把控件可以实现这个功能
回复
keardy 2003-05-09
不能显示啊,我已经试了很多遍了
难道没有什么方法能让他显示吗
我是用access中的列表框显示的。
回复
firetoucher 2003-05-09
只返回一个数据集,应该能够显示。

要不你用临时表,然后再一起select出来
回复
keardy 2003-05-09
谢谢,但是有个问题,在查询分析器中得到了正确的结果
但是似乎返回了两个框,查询一个框,sum一个框。
这样的话,我做的列表框还是不能显示sum的数值
怎么办?能不能做到一个框内?
回复
spland 2003-05-09
用 sum
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-09 11:04
社区公告
暂无公告