SELECT
[SEQ]
      ,[CTIME]
      ,[MTIME]
      ,[RTIME]
      ,[IsValid]
      ,[Re]
      ,[ComCode]
      ,[F001]
      ,[F002]
      ,[StockCode]
      ,[OldCode]
      ,[StockSName]
      ,[F003]
      ,[F004]
      ,[comtime]
      ,[ABBR]
  FROM [DB40].[dbo].[STK001]
GROUP BY [ComCode]
ORDER BY [ComCode] ASC它老是说
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 'DB40.dbo.STK001.SEQ' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
而且是每个字段都这样(我一个个注释下来).....

解决方案 »

  1.   

    SELECT
            [SEQ]
          ,[CTIME]
          ,[MTIME]
          ,[RTIME]
          ,[IsValid]
          ,[Re]
          ,[ComCode]
          ,[F001]
          ,[F002]
          ,[StockCode]
          ,[OldCode]
          ,[StockSName]
          ,[F003]
          ,[F004]
          ,[comtime]
          ,[ABBR]
      FROM [DB40].[dbo].[STK001]
    GROUP BY [SEQ]
          ,[CTIME]
          ,[MTIME]
          ,[RTIME]
          ,[IsValid]
          ,[Re]
          ,[ComCode]
          ,[F001]
          ,[F002]
          ,[StockCode]
          ,[OldCode]
          ,[StockSName]
          ,[F003]
          ,[F004]
          ,[comtime]
          ,[ABBR]
    ORDER BY [ComCode] ASC好好看看聚合函数的用法~~
      

  2.   

    SELECT
            [SEQ]
          ,[CTIME]
          ,[MTIME]
          ,[RTIME]
          ,[IsValid]
          ,[Re]
          ,[ComCode]
          ,[F001]
          ,[F002]
          ,[StockCode]
          ,[OldCode]
          ,[StockSName]
          ,[F003]
          ,[F004]
          ,[comtime]
          ,[ABBR]
      FROM [DB40].[dbo].[STK001]
    GROUP BY         [SEQ]
          ,[CTIME]
          ,[MTIME]
          ,[RTIME]
          ,[IsValid]
          ,[Re]
          ,[ComCode]
          ,[F001]
          ,[F002]
          ,[StockCode]
          ,[OldCode]
          ,[StockSName]
          ,[F003]
          ,[F004]
          ,[comtime]
          ,[ABBR]
    ORDER BY [ComCode] ASC
    这样才对,不过这样就应该不符合楼主原来的本意了
    与我刚学Sql时一样,哈哈
      

  3.   

    SELECT
            [SEQ]
          ,[CTIME]
          ,[MTIME]
          ,[RTIME]
          ,[IsValid]
          ,[Re]
          ,[ComCode]
          ,[F001]
          ,[F002]
          ,[StockCode]
          ,[OldCode]
          ,[StockSName]
          ,[F003]
          ,[F004]
          ,[comtime]
          ,[ABBR]
      FROM [DB40].[dbo].[STK001]
    GROUP BY         [SEQ]
          ,[CTIME]
          ,[MTIME]
          ,[RTIME]
          ,[IsValid]
          ,[Re]
          ,[ComCode]
          ,[F001]
          ,[F002]
          ,[StockCode]
          ,[OldCode]
          ,[StockSName]
          ,[F003]
          ,[F004]
          ,[comtime]
          ,[ABBR]
    ORDER BY [ComCode] ASC
    这样才对,不过这样就应该不符合楼主原来的本意了
    与我刚学Sql时一样,哈哈
      

  4.   

    用到group by 子句时,你查询出来的字段在group by后也要有
    列名可以应用聚合函数
      

  5.   

    对包含group by的语句,select后面的列是有限定的,
    只能选出这样的列:
    1.group by后面指定的列,
    2.不是group by后面的列,则必须包含在一个聚合函数里,例如sum(SEQ),avg(SEQ)等等。select ComCode,sum(SEQ) as totalSEQ,Count(*) as totalCount
    from [DB40].[dbo].[STK001]
    group by ComCode --正确,如果SEQ这一列能使用sum()函数的话select ComCode,SEQ
    from [DB40].[dbo].[STK001]
    group by ComCode --错误,SEQ不在group by字句中,并且也没有对它施加聚合函数,对于同一个ComCode,表中可能对应多个SEQ,系统不知道选哪个SEQ,因此报错
      

  6.   

    语法错误,已经写的很清楚了!
    GROUP BY 子句
    指定用来放置输出行的组,并且如果 SELECT 子句 <select list> 中包含聚合函数,则计算每组的汇总值。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。
    说明  如果未指定 ORDER BY 子句,则使用 GROUP BY 子句不按任何特定的顺序返回组。建议始终使用 ORDER BY 子句指定具体的数据顺序。
      

  7.   

    去捣鼓触发器了,忘了上来结帖子.......
    原来聚合函数是指这种的啊,我还以为要自己去写function呢.....联机帮助好简陋.....
    加分结帖,分不多,请多多包涵
      

  8.   

    http://topic.csdn.net/u/20080726/23/45568f53-069f-472e-80b0-1361a72109de.html第7问