Sql server 2005 这个sql语法正确吗?
我可以在Sql server 2005 这个sql语法正确吗?,sql-server-2005,select,sum,isnull,Sql Server 2005,Select,Sum,Isnull,我可以在ISNULL()中应用SUM()。。。。考虑下面的SQLServer选择语句< /P> SELECT e.Emp_Id,e.Identity_No,e.Emp_Name,case WHEN e.SalaryBasis=1 THEN 'Weekly' ELSE 'Monthly' end as SalaryBasis,e.FixedSalary, ISNULL(Adv.Daily_Wage,0) as Advance from Employee as e inner j
ISNULL()
中应用SUM()
。。。。考虑下面的SQLServer选择语句< /P>
SELECT e.Emp_Id,e.Identity_No,e.Emp_Name,case WHEN e.SalaryBasis=1
THEN 'Weekly' ELSE 'Monthly' end as SalaryBasis,e.FixedSalary,
ISNULL(Adv.Daily_Wage,0) as Advance from Employee as e
inner join Designation as d on e.Desig_Id=d.Desig_Id
Left Outer Join Payroll as Adv on e.Emp_Id=Adv.Emp_Id where e.Is_Deleted=0
这句话很好用。。。。但是当我在一个ISNULL()
我弄错了
“Employee.Emp_Id”列在中无效
选择列表,因为它不是
包含在聚合中的
函数或GROUPBY子句
任何建议……您需要按选择中的其他列进行分组。差不多
SELECT e.Emp_Id,
e.Identity_No,
e.Emp_Name,
case
WHEN e.SalaryBasis=1 THEN 'Weekly'
ELSE 'Monthly'
end as SalaryBasis,e.FixedSalary,
ISNULL(SUM(Adv.Daily_Wage),0) as Advance
from Employee as e inner join
Designation as d on e.Desig_Id=d.Desig_Id Left Outer Join
Payroll as Adv on e.Emp_Id=Adv.Emp_Id
where e.Is_Deleted=0
GROUP BY e.Emp_Id, --This section is what you are missing
e.Identity_No,
e.Emp_Name,
case
WHEN e.SalaryBasis=1 THEN 'Weekly'
ELSE 'Monthly'
end,
e.FixedSalary
看看这里的定义
我觉得
组中的案例
效率低下。。。您也可以通过e.salarybash
进行分组。
SELECT e.Emp_Id,
e.Identity_No,
e.Emp_Name,
case
WHEN e.SalaryBasis=1 THEN 'Weekly'
ELSE 'Monthly'
end as SalaryBasis,e.FixedSalary,
ISNULL(SUM(Adv.Daily_Wage),0) as Advance
from Employee as e inner join
Designation as d on e.Desig_Id=d.Desig_Id Left Outer Join
Payroll as Adv on e.Emp_Id=Adv.Emp_Id
where e.Is_Deleted=0
GROUP BY e.Emp_Id, --This section is what you are missing
e.Identity_No,
e.Emp_Name,
case
WHEN e.SalaryBasis=1 THEN 'Weekly'
ELSE 'Monthly'
end,
e.FixedSalary