日期:2014-05-18  浏览次数:20494 次

执行存储过程的时候出现 警告: 聚合或其它 SET 操作消除了空值。
SQL code

CREATE Proc GetResultFee
@YearNo varchar(4),
@MonthNo varchar(2)
AS
BEGIN
Insert Into TB_EmpFeeResult Select A.工号,B.statYear AS 统计年份,B.statMonth AS 统计月份,A.纯计件录入工资,A.纯计件加班工资,B.年工,
C.奖金,D.扣罚,E.所得税,F.InsuranceFee AS 缴纳保险,G.ResultFee AS 寝室费用,0 AS 实发工资
FROM TB_JobSalary A,V_GetYearFee B,V_GetReWardFee C,V_GetPenFee D,V_GetTaxFee E,V_GetInsFee F,V_GetRoomFee G
WHERE A.工号=B.EmpNo AND A.工号=C.EmpNo AND A.工号=D.EmpNo AND A.工号=E.EmpNo AND A.工号=F.EmpNo AND A.工号=G.EmpNo 
AND B.statYear=@YearNo AND B.statMonth=@MonthNo
END;
GO



帮忙分析下原因

------解决方案--------------------
无所谓,就是忽略了空值.没关系的.
------解决方案--------------------
这是因为你相加的数值里含有空值,对你的结果没影响的
举个例子

SQL code
select 
  sum(col) 
from 
   (
    select 1 as col union 
    select null union 
    select 3
    )t

/**
----------- 
4

(所影响的行数为 1 行)

警告: 聚合或其它 SET 操作消除了空值。
**/

------解决方案--------------------
SQL code

 换成 select isnull(字段,0)

------解决方案--------------------
不懂,up
------解决方案--------------------
不懂,up
------解决方案--------------------
这个问题估计跟空值没有关系,看看TB_EmpFeeResult表的字段个数和查询结果的个数是否一致,各字段的类型是否一样,如类型不一样需要转换类型