我有这样一个表 CREATE TABLE [dbo].[t_books] (
[c_id] [char] (5) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[c_name] [char] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[f_price] [numeric](10, 2) NOT NULL ,
[c_writer] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[c_status] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL 
) ON [PRIMARY]
GO写了这样一个语句
select c_name ,sum(f_price) from t_books group by c_writer或者是f_price为什么告诉我有错误呢??我要是改成c_name就可以了!

解决方案 »

  1.   

    使用分组函数时,在Select列出的未被聚合的列
    必须出现在group by 中,即可以写成
    select c_name ,sum(f_price) 
    from t_books group by c_writer,c_name
      

  2.   

    不是有错误提示吗~
    c_name 该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中写成这样就可以了~select c_name ,sum(f_price) from t_books group by c_name,c_writer
      

  3.   

    group by  的字段 应该是 select 中的字段
      

  4.   

    指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。
      

  5.   

    select c_name ,sum(f_price) from t_books group by c_writer或者是f_price为什么告诉我有错误呢??我要是改成c_name就可以了!
    ------------------------------------------------------------------------------------
    在select列表中的列,如果没有使用聚合函数进行统计,则必须包含在group by 的后面..我的例子中,由于在列表中只有C_name,Sum(f_price) 
    所以,在进行Group By 分组的时候,分组条件至少必须有c_name一项.