假設一個表
discounts
(discounttype varchar(20),
 discount decimal(5,2)
)現在求和:
     select sum(discount) from discounts 不存在問題
但如果下面的方法求和即存在報錯:
      select sum(col_name(object_id('discounts'),3)) 
      from discounts
請問這樣行的通嗎?

解决方案 »

  1.   

    COL_NAME返回数据库列的名称,该列具有相应的表标识号和列标识号。语法
    COL_NAME ( table_id , column_id )参数
    table_id包含数据库列的表的标识号。table_id 属于 int 类型。column_id列的标识号。column_id 参数属于 int 类型。返回类型
    sysname-------------------------------------------
    Sum
    返回在某一集合上对数值表达式求得的和。语法
    Sum(«Set»[, «Numeric Expression»])
    不是Numeric Expression,如何求和?
      

  2.   

    select sum(cast(col_name(object_id('discounts'),3) as int) from discounts
      

  3.   

    還是報錯:將 nvarchar 數值 'discount' 轉換成資料型別為 int 的資料行語法錯誤。
      

  4.   

    declare @a varchar(100)
    set @a='select sum('+col_name(object_id('discounts'),1)+') from discounts'
    exec(@a)
      

  5.   

    謝謝,請問chuifengde(树上的鸟儿)留下QQ號碼好嗎?