连接了员工信息表(员工号,姓名,性别,出生日期,所在部门,所在岗位,入职时间,管理员编号)和月度薪资表(薪资表编号,年份,月份,基本工资,补贴,扣款,员工号,考勤表编号,管理员编号)两个表 现在想查询某个员工的总工资 (基本工资+补贴+扣款),请问该怎么求和?
直接group即可,sum里是三个列和
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
即:让WHERE条件不成立.
方法二:(由tianshibao提供)
CREATE TABLE 新表 LIKE 旧表
我可以通过以下SQL语句来连接员工信息表和月度薪资表,查询某个员工的总工资:
SELECT
E.employee_id,
E.employee_name,
SUM(S.salary_base + S.salary_allowance - S.salary_deduct) AS total_salary
FROM
employee E
JOIN salary S ON E.employee_id = S.employee_id
WHERE
E.employee_name = '员工姓名'
GROUP BY
E.employee_id, E.employee_name;
代码解释:
首先,我们通过JOIN关键字将employee表和salary表连接起来,以获得每个员工的基本工资、补贴和扣款信息。
然后,我们使用SUM函数将基本工资、补贴和扣款相加,获得每个员工的总工资。
最后,我们使用WHERE子句限制查询结果,只查询指定员工的信息。
注意,为了避免查询结果出现重复员工信息,我们需要使用GROUP BY子句对员工ID和姓名进行分组。
需要注意的一些问题:
在上述SQL语句中,我们假设employee表包含一个employee_id列和一个employee_name列,而salary表包含一个employee_id列、一个salary_base列、一个salary_allowance列和一个salary_deduct列。如果你的表结构不同,你需要相应地修改SQL语句。
在实际使用中,我们应该通过参数化查询的方式来保护查询语句不受SQL注入攻击。具体做法是使用存储过程或者使用参数化SQL命令。例如,在C#中,我们可以使用SqlCommand对象和SqlParameter对象来实现参数化查询。
在查询结果中,我们只返回了员工ID、员工姓名和总工资三列,如果你需要返回更多的列,可以相应地修改SELECT语句中的列。
总之,以上SQL语句可以实现在SQL Server中连接员工信息表和月度薪资表,查询某个员工的总工资。