COMPUTE count() 想重复的记录算一条

发热鼠标垫 2010-01-11 03:33:55
custNo cellcode
80-0025 W2-302
80-0026 C1-307
80-0027 W1-1006
80-0027 W1-1007
80-0027 W1-1008
80-0032 E2-1803
80-0032 E2-1804
80-0032 E2-1805
80-0032 E2-1805

select (一大堆复杂的查询语句,关联十几个表,几十行sql代码)

COMPUTE count (custNo)

第二记录的结果是总记录数 9, 但不是我想要的结果,我想要 custNo 重复的记录算一个记录。 要显示4,
同时显示出cellcode 为 8 。

...全文
341 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2010-01-11
  • 打赏
  • 举报
回复
。。。
--小F-- 2010-01-11
  • 打赏
  • 举报
回复
看不懂 什么意思
starseeker7 2010-01-11
  • 打赏
  • 举报
回复
想方便又不追求速度
那你就在你查詢外面套一層,專門來統計這個就可以了三,,,

select disinct custNo from
(
select (一大堆复杂的查询语句,关联十几个表,几十行sql代码)
) as TMPDB
COMPUTE count(custNo)
dawugui 2010-01-11
  • 打赏
  • 举报
回复
最好给出完整的表结构,测试数据,计算方法和正确结果.


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
发热鼠标垫 2010-01-11
  • 打赏
  • 举报
回复
存储过程输出到excel报表,excel中需要查看某一列的汇总,但不是记录数量的和,是相同的算一条来统计。Excel 里 COUNTA(B5:B6) 也不准确。两条重复的记录合计成两条了,应该是一条。
starseeker7 2010-01-11
  • 打赏
  • 举报
回复
貌似 COMPUTE 不能使用distinct
只有別用COMPUTE 這玩藝
用其他實現吧


用 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 用法示例
下列 SELECT 语句使用简单 COMPUTE 子句生成 titles 表中 price 及 advance 的求和总计:
USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance)
下列查询在 COMPUTE 子句中加入可选的 BY 关键字,以生成每个组的小计
USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type
此 SELECT 语句的结果用 12 个结果集返回,六个组中的每个组都有两个结果集。每个组的第一个结果集是一个行集,其中包含选择列表中所请求的信息。每个组的第二个结果集包含 COMPUTE 子句中两个 SUM 函数的小计。
说明 一些实用工具(如 osql)显示多个小计或合计聚合汇总的方式可能会使用户以为每个小计都是结果集中的单独一行。这是由于该实用工具设置输出格式的方式;小计或合计聚合返回时单独占用一行。其它应用程序(如 SQL 查询分析器)将多个聚合设置在同一行。
比较 COMPUTE 和 GROUP BY
COMPUTE 和 GROUP BY 之间的区别汇总如下:
GROUP BY 生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。选择列表只能包含分组依据列和聚合函数。
COMPUTE 生成多个结果集。一类结果集包含每个组的明细行,其中包含选择列表中的表达式。另一类结果集包含组的子聚合,或 SELECT 语句的总聚合。选择列表可包含除分组依据列或聚合函数之外的其它表达式。聚合函数在 COMPUTE 子句中指定,而不是在选择列表中。
下列查询使用 GROUP BY 和聚合函数;该查询将返回一个结果集,其中每个组有一行,该行中包含该组的聚合小计:
USE pubs
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
说明 在 COMPUTE 或 COMPUTE BY 子句中,不能包含 ntext、text 或 image 数据类型。
feixianxxx 2010-01-11
  • 打赏
  • 举报
回复
天书。。
发热鼠标垫 2010-01-11
  • 打赏
  • 举报
回复
select * from a
left join b .......
.....
where 1=1 .....
order by c.code,r.code

COMPUTE count ( distinct c.code)

我一开始试过了,报错。
消息 156,级别 15,状态 1,第 21 行
关键字 'distinct' 附近有语法错误。
可能要程序里判断取到的记录 distinct后的数量。
lang071234 2010-01-11
  • 打赏
  • 举报
回复
有点没看懂
nianran520 2010-01-11
  • 打赏
  • 举报
回复
count(distinct custNo)

22,209

社区成员

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

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