0
저는 테이블이 tblEmployeeNominees인데,이 테이블은 피고용인 후보자로 구성되며 피고용인의 피정자 번호를 표시하려고합니다. 직원이 두 명의 후보자가있는 경우 해당 직원의 일련 번호를 1,으로 표시해야합니다. 2 개 이상인 경우 1,2,3, .........을 표시해야합니다.일련 번호 생성
저는 테이블이 tblEmployeeNominees인데,이 테이블은 피고용인 후보자로 구성되며 피고용인의 피정자 번호를 표시하려고합니다. 직원이 두 명의 후보자가있는 경우 해당 직원의 일련 번호를 1,으로 표시해야합니다. 2 개 이상인 경우 1,2,3, .........을 표시해야합니다.일련 번호 생성
SELECT *, ROW_NUMBER() OVER (PARTITION BY Employee ORDER BY Nominee)
FROM tblEmployeeNominees;
이것 좀보세요. SQL Server 2005에 대한 작업
DECLARE @Table TABLE(
EmpID INT,
NomineeID INT
)
INSERT INTO @Table (EmpID,NomineeID) SELECT 1, 1
INSERT INTO @Table (EmpID,NomineeID) SELECT 1, 2
INSERT INTO @Table (EmpID,NomineeID) SELECT 2, 1
INSERT INTO @Table (EmpID,NomineeID) SELECT 3, 1
INSERT INTO @Table (EmpID,NomineeID) SELECT 3, 2
INSERT INTO @Table (EmpID,NomineeID) SELECT 3, 3
;WITH Serials AS (
SELECT EmpID,
MIN(NomineeID) MinNomineeID,
CAST(MIN(NomineeID) AS VARCHAR(MAX)) Serial
FROM @Table
GROUP BY EmpID
UNION ALL
SELECT t.EmpID,
t.NomineeID,
s.Serial + ',' + CAST(NomineeID AS VARCHAR(MAX)) Serial
FROM @Table t INNER JOIN
Serials s ON t.EmpID = s.EmpID
AND t.NomineeID > s.MinNomineeID
)
SELECT Serials.EmpID,
Serials.Serial
FROM Serials INNER JOIN
(
SELECT EmpID,
MAX(LEN(Serial)) LenSerial
FROM Serials
GROUP BY EmpID
) Lens ON Serials.EmpID = Lens.EmpID
WHERE LEN(Serials.Serial) = Lens.LenSerial
ORDER BY 1
OPTION (MAXRECURSION 0)