加入不正常

时间:2015-12-11 11:58:57

标签: sql join sql-server-2005

我正在将值插入到表格中,如下所示

INSERT INTO p_leave_allocation_11122015(Mkey, Entry_Sr_no, Comp_mkey,FDepartment_Id,FModule_Id,Year, Emp_mkey, Emp_card_no, U_Datetime, Delete_Flag,Month12,PL_Days,)
    SELECT 
        ROW_NUMBER() OVER(ORDER BY p_leave_allocation.MKey) + 1643,  
        ROW_NUMBER() OVER(ORDER BY Entry_Sr_no) + 898, 
        Comp_mkey, FDepartment_Id, FModule_Id,
        '2016', Emp_mkey, Emp_card_no, U_Datetime,
        Delete_Flag, Month12, 0 
    FROM 
        p_leave_allocation lev 
    WHERE
        Emp_mst Emp 
    LEFT JOIN 
        p_leave_allocation AND Emp.status IN ('A','S') 
        AND YEAR(Emp.Date_Of_Joining) = '2015' 

但是我收到了一个错误:

  

在'Emp'附近的预期条件的上下文中指定的非布尔类型的表达式。

这里有什么问题?

更新

我试过这样但是得到错误

  

关键字'WHERE'附近的语法不正确。

代码是: -

INSERT INTO p_leave_allocation_11122015(Mkey, Entry_Sr_no, Comp_mkey,FDepartment_Id,FModule_Id,Year, Emp_mkey, Emp_card_no, U_Datetime, Delete_Flag,Month12,PL_Days,)
    SELECT 
        ROW_NUMBER() OVER(ORDER BY p_leave_allocation.MKey) + 1643,  
        ROW_NUMBER() OVER(ORDER BY Entry_Sr_no) + 898, 
        Comp_mkey, FDepartment_Id, FModule_Id,
        '2016', Emp_mkey, Emp_card_no, U_Datetime,
        Delete_Flag, Month12, 0 
    FROM 
        p_leave_allocation lev LEFT JOIN  Emp_mst emp
    WHERE
       emp.Status in ('A','S')
     and 
   Year(emp.Date_Of_Joining) = '2015'

1 个答案:

答案 0 :(得分:1)

您需要on子句:

SELECT 
    ROW_NUMBER() OVER(ORDER BY p_leave_allocation.MKey) + 1643,  
    ROW_NUMBER() OVER(ORDER BY Entry_Sr_no) + 898, 
    Comp_mkey, FDepartment_Id, FModule_Id,
    '2016', Emp_mkey, Emp_card_no, U_Datetime,
    Delete_Flag, Month12, 0 
FROM p_leave_allocation lev LEFT JOIN
     Emp_mst emp
     ON lev.?? = emp.??
-----^
WHERE emp.Status in ('A', 'S')  and 
      YEAR(emp.Date_Of_Joining) = '2015';

我不知道用于加入的列是什么。在第一个查询中,您在WHERE子句FROM WHERE`子句的中间有一个. The子句。