Declare @DepartID int;Declare @Alltotal int;  
Select  @DepartID=Count(*) From Emp_Base where DepartID=2 select @Alltotal=Count(*) from emp_base  
SELECT  SUM(@DepartID) AS DepartIDCount, SUM(@Alltotal) AS Alltotal, CAST(CONVERT (float, SUM(@DepartID)) * 100 / CONVERT (float, SUM(@Alltotal))  
AS decimal(38 , 2)) AS 百分比,Count(*)*400/@Alltotal as 长度 FROM Emp_Base where DepartID=2 Group By DepartID
就是不知道为什么我查询出来的@DepartID为什么为原有数据的二次方,比如我查询的DepartID=2的总数为8人,但是查询结果为16人,怎么回事,这个语句不是多表查询阿,就一个表,求解!!!select

解决方案 »

  1.   

    Declare @DepartID int;Declare @Alltotal int;  
    Select  @DepartID=Count(*) From Emp_Base where DepartID=2 select @Alltotal=Count(*) from emp_base  
    SELECT  SUM(@DepartID) AS DepartIDCount, SUM(@Alltotal) AS Alltotal, CAST(CONVERT (float, SUM(@DepartID)) * 100 / CONVERT (float, SUM(@Alltotal))  
    AS decimal(38 , 2)) AS 百分比,Count(*)*400/@Alltotal as 长度 FROM Emp_Base where DepartID=2 Group By DepartID
    逻辑有问题
    SELECT  count(@DepartID) AS DepartIDCount, count(@Alltotal) AS Alltotal, CAST(CONVERT (float, SUM(@DepartID)) * 100 / CONVERT (float, SUM(@Alltotal))  
    AS decimal(38 , 2)) AS 百分比,Count(*)*400/@Alltotal as 长度 FROM Emp_Base where DepartID=2 Group By DepartID
    --------------
    @DepartID  这个值已经被你group by 附值了,你后面在一次group by sum 那不成倍数才怪。
      

  2.   

    Declare @DepartID int;Declare @Alltotal int;  
    Select  @DepartID=Count(*) From Emp_Base where DepartID=2 select @Alltotal=Count(*) from emp_base  
    SELECT  @DepartID, @Alltotal,@DepartID)) * 100.0 / @Alltotal 
    ,Count(*)*400/@Alltotal as 长度 FROM Emp_Base where DepartID=2 Group By DepartID
      

  3.   

    SELECT  SUM(@DepartID) AS DepartIDCount,这里不要用SUM,用count(@DepartID)。