子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Exception: 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。源错误: 
行 516:                catch (System.Data.SqlClient.SqlException ex)
行 517:                {
行 518:                    throw new Exception(ex.Message);
行 519:                }
行 520:                return ds;
 源文件: E:\考勤程序开发\DUTY\Duty\DBUtility\DbHelperSQL.cs    行: 518 堆栈跟踪: 
[Exception: 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。]
   Maticsoft.DBUtility.DbHelperSQL.Query(String SQLString) in E:\考勤程序开发\DUTY\Duty\DBUtility\DbHelperSQL.cs:518
   Duty.DAL.DutyCacl.GetList(String strWhere1, String strWhere2) in E:\考勤程序开发\DUTY\Duty\DAL\DutyCacl.cs:255
   Duty.BLL.DutyCacl.GetList(String strWhere1, String strWhere2) in E:\考勤程序开发\DUTY\Duty\BLL\DutyCacl.cs:95
   Duty.Web.Police.List.Button2_Click(Object sender, EventArgs e) in E:\考勤程序开发\DUTY\Duty\Web\Duty\Police\List.aspx.cs:2696
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563 

解决方案 »

  1.   


    不要胡乱写try...catch。你这样写,就无法借助于vs进行调试。当真正调试时,vs调试器会中断在出现异常的行上,并且你可以在调试窗口或者命令窗口打印出所执行的sql语句。你应该贴出来这个语句,在这个或者SQL Server论坛上去问。再次强调,为了保证开发效率,一定不要胡乱滥用try...catch。
      

  2.   


    楼主你也说了做了行转列,那么你现在的SQL并不一定适用,需要去重新按需求来写SQL语句。
      

  3.   

    简单的解决办法是 top 1 或者 max()  
      

  4.   

    不要写try...catch。进行调试。问题应该明朗了。
      

  5.   

    试试,把"="号改为"IN"如SELECT [col1],[col2],... FROM [T1] WHERE [id] = (SELECT [id] FROM [T2] WHERE ...)
    改为
    SELECT [col1],[col2],... FROM [T1] WHERE [id] IN (SELECT [id] FROM [T2] WHERE ...)