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 は、こ​​の従業員が現在働いているブランチ (バンガロール) を示しています。SP のパラメーターを介して ID が渡されたすべての従業員について、現在のブランチ (ムンバイなど) の前に彼が働いていたブランチを取得したい場合

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

どうしよう・・・助けてください

4

2 に答える 2

1

このクエリは、現在のブランチが最初のブランチでない場合、すべての従業員の最後から 2 番目のブランチを返します。

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 に答える