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-1805select (一大堆复杂的查询语句,关联十几个表,几十行sql代码)COMPUTE   count   (custNo)第二记录的结果是总记录数 9, 但不是我想要的结果,我想要 custNo 重复的记录算一个记录。 要显示4,
同时显示出cellcode 为 8 。

解决方案 »

  1.   

     select * from a 
    left join b .......
    .....
    where 1=1 .....
    order by c.code,r.codeCOMPUTE   count   ( distinct  c.code) 我一开始试过了,报错。
    消息 156,级别 15,状态 1,第 21 行
    关键字 'distinct' 附近有语法错误。
    可能要程序里判断取到的记录 distinct后的数量。
      

  2.   

    貌似   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   数据类型。   
      

  3.   

    存储过程输出到excel报表,excel中需要查看某一列的汇总,但不是记录数量的和,是相同的算一条来统计。Excel 里 COUNTA(B5:B6) 也不准确。两条重复的记录合计成两条了,应该是一条。
      

  4.   

    最好给出完整的表结构,测试数据,计算方法和正确结果.发帖注意事项
    http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
      

  5.   

    想方便又不追求速度
    那你就在你查詢外面套一層,專門來統計這個就可以了三,,,select disinct custNo   from
     (
    select (一大堆复杂的查询语句,关联十几个表,几十行sql代码)
    ) as TMPDB
    COMPUTE  count(custNo)