数据库中的要进行求和的列数据类型是文本  
使用sum(列名)from 源表 group by  进行分类统计时会出错(提示标准函数的类型错误)。
原因也知道是对文本进行求和了。
那么可以利用什么方法解决这个问题呢?(不改变数据库中改列的数据类型)

解决方案 »

  1.   

    进行一下类型转换:
    selec sum(cast(列名 as 数值类型))as 新列名 from 源表 group by
      

  2.   

    Select Sum(Convert(Decimal(18,2), COLA)) ColA from TableName Group By ColB
      

  3.   

    to :回复人: zhangl_cn(不做和尚了!) 使用类型转换的话,遇到空值时会出错。to 回复人: Antiquesoft(古董) 
    Decimal(18,2), COLA  什么意思,刚接触编程,不太懂。 
     
      

  4.   

    Decimal是位置型,18,2是说小数点后两位,前18位.
    不知道这样理解对不。
      

  5.   

    使用时会提示Convert函数未定义
    是要在user 中引用那个?那位达人懂Convert函数给解释一下吧~
      

  6.   

    CONVERT 函数语法如下
    CONVERT (<data_ type>[ (length )], <expression> [ ,style])

    select convert(int,3.14), convert( bit, 12.345)
    运行结果如下
    ------------------------------ 
    3         1
    &#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;&#1048576;
      

  7.   

    谢谢楼上
    我现在的数据库结构是:
    序号    类别     金额(文本类型)     余额(文本类型)
    1       A        10                   0
    2       B                             10
    3       C        20           
    4       C                             15
    5       B        10                   5    如何进行按“类别”进行分类统计?
    使用cast(列名 as 数值类型) 会因为空值出错。
    使用Convert的语句怎么写?是不是还要要在uses中引用那个类?
      

  8.   

    使用Convert时会提示函数未定义,引用了ConvUtils也不行么,怎么回事?
      

  9.   

    Convert 不是Delphi里函数!
    是标准SQL语句所支持的函数!
    在Delphi里这样写
    ADOQuery1.SQL.Text := 
    'Select Sum(Convert(Decimal(18,2), COLA)) ColA from TableName Group By ColB';不可能提示说未定义吧!
      

  10.   

    把空值过滤掉。加个条件 where 金额 is not null
      

  11.   

    to Antiquesoft(古董)
    就是这样写的,显示为定义。
    所以郁闷着。数据库为access。to bluesky23(乐天_正在开发右半脑^_^) ( )在设计数据库是就已经设置默认数据是''。不存在null。