解决方案 »

  1.   

    SELECT  SUM(a.seremit_t) AS seremit_t ,
            SUM(a.seremit_f) AS seremit_f ,
            SUM(a.seaccept_t) AS seaccept_t ,
            SUM(a.seaccept_f) AS seaccept_f ,
            SUM(a.secash_t) AS secash_t ,
            SUM(a.secash_f) AS secash_f
    FROM    dbo.tb_Periodstart AS a
    WHERE   a.deptclass IN ( 108, 107, 106 )
            AND CONVERT(VARCHAR, DATEADD(dd, 1, a.ctdate), 23) = '2014-04-10'
    GROUP BY a.id
      

  2.   

    纯粹你的SQL语句没用到ID,应该不会报错,问题就是你的查询是否仅仅那么简单
      

  3.   

    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列 'a.id' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
    at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
    at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
    at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
    at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
    at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
    at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
    菜鸟 靠边....
      

  4.   

    你管那么多...那个 数据表每个id你这句话很有问题,不说清楚谁知道是不是要在查询中获取的
    你看到查询里边 有id 字段吗?  查询窗口 跟数据表窗口貌似很不一样啊..这应该是常识吧.
      

  5.   

    我也在纳闷.数据查询语句没错. 但就是莫名其妙的报错.而且我说了.我是用的struts2 跟sql server 2000 希望大神能给点处理错误的方法.或者....  帮我解决..
      

  6.   

    抱歉.我也是被这个问题搞得...都挺长时间了...气死人了都...
    不过查询分析器也没有报错...这就是我感觉计较困惑的地方.. 
    sorry 了................不管怎样  多谢.
      

  7.   

    单纯你的语句本身就是没有错误的,所以我才说你前端程序调用的语句是不是真的是这个语句。有个方法,开启sqlserver Profiler,跟踪语句,看看点击报错的那一步,实际上是发送了什么SQL给sqlsever,导致报错。
      

  8.   

    prepareStatement 运行无参sql 怎么写   java
      

  9.   

    我只搞过C#,Profiler你用过没?这个可以抓SQL
      

  10.   

    给我发个那个Profiler吧,,,
    [email protected]
    QQ 1005524346
      

  11.   

    那你用java断点(C#这样叫,java不知道是不是)跟踪一下报错那一步或者前一步,最终的SQL语句,应该不是你一开始贴出来的那个
      

  12.   

    给我发个那个Profiler吧,,,
    [email protected]
    QQ 1005524346Profiler工具是sqlserver 最晚从2000就自带的工具,不是什么第三方软件
      

  13.   

    2000太老了,想百度个教程给你都找不到,既然你用java,java应该也可以调试获取语句的。
      

  14.   

    是的
    这个东西吗? 我慢慢调试吧..我觉得你用java调试更方便
      

  15.   

    刚刚发现一个问题  
    这个查询"SELECT sID,sText from tb_compney where sID IN ("+deptClass+");";
    事件探查器显示 如下
    SELECT sID,sText , *  from tb_compney where sID IN (10202);
    就是这个的原因.
      

  16.   

    嗯,带出ID了,不过你这里也没进行sum啊
      

  17.   

    我只是这样说
    原语句变成这个了
    SELECT Sum(a.seremit_t) AS seremit_t,Sum(a.seremit_f) AS seremit_f,Sum(a.seaccept_t) AS seaccept_t,Sum(a.seaccept_f) AS seaccept_f,Sum(a.secash_t) AS secash_t,Sum(a.secash_f) AS secash_f , *  FROM dbo.tb_Periodstart AS a WHERE a.deptclass IN (10202) and CONVERT(VARCHAR, dateadd(dd,1,a.ctdate), 23)='2014-04-10'
    有 , * 啊