select t1.月份,t1.职工id,t1.姓名,t1.基本工资,t1.奖惩工资,t1.加班工资 from t1(基本工资),t2(奖惩工资),t3(加班工资) where t1.职工id=t2.职工id and t1.职工id=t3.职工id and t1.月份= t2.月份 and t1.月份= t3.月份
再对奖惩工资和加班工资加上一个转换函数,为Null的话就转换为0,oracle里面是nvl,sql server好像是isnull 你核实下 isnull(t1.奖惩工资,0),isnull(t1.加班工资,0)
--假如你的表名依次为 tb1、tb2、tb3
--你理解错了 tb1肯定是最前的 因为是基本工资 所以他包含所有的员工,以他为主表就可以
--不明白再问我 希望解决了楼主的问题
select tb1.月份, tb1.职工编号,tb1.姓名,tb1.基本工资,tb2.奖惩工资,tb3.加班工资
from tb1 left join tb2 on tb1.职工编号= tb2.职工编号
left join tb3 on tb1.职工编号= tb3.职工编号
建立相应表对应关系即可。注意外键的连接。
连接需要两个条件(月份+职工号)