0

このために、最初に部門に参加した従業員の ID を選択するクエリを作成する必要があります。deptId にグループ化を適用し、参加日に Min 集計関数を適用します。

EmpId joinDate  deptId
1      2/5/2012   2
2      5/6/2012   1
3      2/5/2012   2
4      5/58/2012  2

私の結果は次のようになります。

EmpId joinDate  deptId
1      2/5/2012   2
2      5/6/2012   1

EmpId を取得できません。私の EmpId は Guid 型です。そのための可能な解決策はありますか。MS SQL SERVER 2008 を使用しています。

4

2 に答える 2

1

このクエリを試して、私に知らせてください

select EmpId, joinDate , deptId from
(select row_number() over(partition by deptId order by joinDate) as rnk,*
from employe)E
where E.rnk=1
于 2012-07-13T07:05:07.260 に答える
0

多分もう少し簡単な解決策:

SELECT * FROM employees a WHERE joinDate IN
(SELECT MAX(b.joinDate) FROM employees b WHERE b.deptId = a.deptId)

テーブルの名前がemployeesであり、最初に入社した部門からすべての従業員を取得したいとします (複数存在する可能性があります!)。免責事項: MS SQL Server ではテストされていませんが、PostgreSQL ではテストされていますが、これは単純な SQL であり、動作するはずです。

于 2012-07-13T07:55:22.283 に答える