【问题标题】:Join not working properly加入不能正常工作
【发布时间】:2016-03-17 08:05:58
【问题描述】:

我正在向下表中插入值

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'

【问题讨论】:

  • 格式化您的问题,使其可读
  • @Amit 是投反对票的原因吗?
  • 应该是SELECT ... FROM ... LEFT JOIN .... WHERE .....,你把 T-SQL 语法搞混了——你应该去 SQL Server 联机丛书上查看如何编写正确的 SELECT 语句的详细信息!
  • @marc_s:非常感谢,让我试试看
  • @marc_s:先生,我试过了,但它不起作用。现在出现Incorrect syntax near the keyword 'WHERE'. 错误

标签: sql join sql-server-2005


【解决方案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';

我不知道要加入哪些列。在第一个查询中,FROM 子句中间有一个 WHERE 子句,. TheWHERE` 子句在后面。

【讨论】:

  • 得到错误Msg 4104, Level 16, State 1, Line 1 The multi-part identifier "p_leave_allocation.MKey" could not be bound.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2010-11-30
  • 2021-10-02
  • 2017-08-06
  • 2013-11-22
  • 1970-01-01
相关资源
最近更新 更多