查询时对指定列求和

emoam 2003-08-19 09:41:23

TabName表中Sum字段是Int型,我想写这样一条SQL语句来对符合指定条件的记录的Sum字段求和,该怎么写?

游标不大想用。
我记得这种求和的语句在哪个地方见过,但一时之间想不起来了
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-08-19
  • 打赏
  • 举报
回复
select sum([sum]) 和 from tabname where 条件列='vv'

SUM
返回表达式中所有值的和,或只返回 DISTINCT 值。SUM 只能用于数字列。空值将被忽略。

语法
SUM ( [ ALL | DISTINCT ] expression )

参数
ALL

对所有的值进行聚合函数运算。ALL 是默认设置。

DISTINCT

指定 SUM 返回唯一值的和。

expression

是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。

返回类型
以最精确的 expression 数据类型返回所有表达式值的和。

表达式结果 返回类型
整数分类 int
decimal 分类 (p, s) decimal(38, s)
money 和 smallmoney 分类 money
float 和 real 分类 float






重要 当使用 CUBE 或 ROLLUP 时,不支持区分聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用了,Microsoft® SQL Server™ 将返回错误信息并取消查询。


示例
A. 在聚合和行聚合中使用 SUM
下列示例显示聚合函数和行聚合函数之间的区别。第一个示例显示只提供汇总数据的聚合函数,第二个示例显示提供详尽数据和汇总数据的行聚合函数。

USE pubs
GO
-- Aggregate functions
SELECT type, SUM(price), SUM(advance)
FROM titles
WHERE type LIKE '%cook'
GROUP BY type
ORDER BY type
GO

下面是结果集:

type
------------ -------------------------- --------------------------
mod_cook 22.98 15,000.00
trad_cook 47.89 19,000.00

(2 row(s) affected)

USE pubs
GO
-- Row aggregates
SELECT type, price, advance
FROM titles
WHERE type LIKE '%cook'
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type

下面是结果集:

type price advance
------------ -------------------------- --------------------------
mod_cook 19.99 0.00
mod_cook 2.99 15,000.00

sum
==========================
22.98
sum
==========================
15,000.00

type price advance
------------ -------------------------- --------------------------
trad_cook 20.95 7,000.00
trad_cook 11.95 4,000.00
trad_cook 14.99 8,000.00

sum
==========================
47.89
sum
==========================
19,000.00

(7 row(s) affected)

B. 计算多列的组合计
下例计算每类书籍的价格和预付款总和。

USE pubs
GO
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
ORDER BY type
GO

下面是结果集:

type
------------ -------------------------- --------------------------
business 54.92 25,125.00
mod_cook 22.98 15,000.00
popular_comp 42.95 15,000.00
psychology 67.52 21,275.00
trad_cook 47.89 19,000.00
UNDECIDED (null) (null)

(6 row(s) affected)

pengdali 2003-08-19
  • 打赏
  • 举报
回复
select sum([sum]) 和 from tabname where 条件列='vv'

SUM
返回表达式中所有值的和,或只返回 DISTINCT 值。SUM 只能用于数字列。空值将被忽略。

语法
SUM ( [ ALL | DISTINCT ] expression )

参数
ALL

对所有的值进行聚合函数运算。ALL 是默认设置。

DISTINCT

指定 SUM 返回唯一值的和。

expression

是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。

返回类型
以最精确的 expression 数据类型返回所有表达式值的和。

表达式结果 返回类型
整数分类 int
decimal 分类 (p, s) decimal(38, s)
money 和 smallmoney 分类 money
float 和 real 分类 float






重要 当使用 CUBE 或 ROLLUP 时,不支持区分聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用了,Microsoft® SQL Server™ 将返回错误信息并取消查询。


示例
A. 在聚合和行聚合中使用 SUM
下列示例显示聚合函数和行聚合函数之间的区别。第一个示例显示只提供汇总数据的聚合函数,第二个示例显示提供详尽数据和汇总数据的行聚合函数。

USE pubs
GO
-- Aggregate functions
SELECT type, SUM(price), SUM(advance)
FROM titles
WHERE type LIKE '%cook'
GROUP BY type
ORDER BY type
GO

下面是结果集:

type
------------ -------------------------- --------------------------
mod_cook 22.98 15,000.00
trad_cook 47.89 19,000.00

(2 row(s) affected)

USE pubs
GO
-- Row aggregates
SELECT type, price, advance
FROM titles
WHERE type LIKE '%cook'
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type

下面是结果集:

type price advance
------------ -------------------------- --------------------------
mod_cook 19.99 0.00
mod_cook 2.99 15,000.00

sum
==========================
22.98
sum
==========================
15,000.00

type price advance
------------ -------------------------- --------------------------
trad_cook 20.95 7,000.00
trad_cook 11.95 4,000.00
trad_cook 14.99 8,000.00

sum
==========================
47.89
sum
==========================
19,000.00

(7 row(s) affected)

B. 计算多列的组合计
下例计算每类书籍的价格和预付款总和。

USE pubs
GO
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
ORDER BY type
GO

下面是结果集:

type
------------ -------------------------- --------------------------
business 54.92 25,125.00
mod_cook 22.98 15,000.00
popular_comp 42.95 15,000.00
psychology 67.52 21,275.00
trad_cook 47.89 19,000.00
UNDECIDED (null) (null)

(6 row(s) affected)

emoam 2003-08-19
  • 打赏
  • 举报
回复
找到了,是不是
select sum(sum) feom tablename where ……
polugen 2003-08-19
  • 打赏
  • 举报
回复
sum(case~~~~)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧