0

我有像 Emp_salary 这样的表

Emp_id  Salary  name  Branch_ID  Is_Current_Branch  Branch_name
1       1000     A     89           0                pune
1       2000     A     25           0                Mumbai  
1       3000     A     12           1                Bangalore 

这里的 Is_current_Branch 表示该员工当前工作的分支(班加罗尔),如果我想获得他在当前分支(即孟买)之前工作的分支,所有员工的 ID 通过 SP 中的参数传递

@Employee='1,2,3' (3 employee parameter)

怎么办...请帮帮我

4

2 回答 2

1

如果当前分支不是他们的第一个分支,则此查询将给出每个员工的倒数第二个分支。

Op 没有提供任何增加的字段,所以我们按照他们增加的薪水的顺序记录。

;WITH secondbranch 
     AS (SELECT *, 
                Row_number() 
                  OVER ( 
                    partition BY emp_id 
                    ORDER BY salary DESC) AS branchnumber 
         FROM   emp_salary) 
SELECT * 
FROM   secondbranch 
WHERE  branchnumber = 2 
于 2012-06-22T07:44:20.900 回答
1

您需要在表格上添加一个日期字段(以确保它是正确的条目),然后按它排序:

ALTER TABLE Emp_salary
ADD [LeftDate] DATETIME

然后你可以从 Emp_Table 中选择:

SELECT TOP 1 * FROM 
Emp_salary
WHERE IS_CURRENT_BRANCH != 1
AND Emp_id = 1
ORDER BY LeftDate DESC
于 2012-06-22T07:47:24.297 回答