AS
CREATE TABLE #T
(
EmployeeNo NVARCHAR(200),
EmployeeName NVARCHAR(200)
)
DECLARE @iTotal AS INT, @iCurrent AS INT
SET @iTotal = 0
SET @iCurrent = 1
DECLARE @EmployeeNO AS NVARCHAR(200), @EmployeeName AS NVARCHAR(200)
DECLARE Cur_Name CURSOR FOR
SELECT EmployeeNO, EmployeeName FROM Employee
OPEN Cur_Name
FETCH NEXT FROM Cur_Name
INTO @EmployeeNO, @EmployeeName
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #T (EmployeeNO, EmployeeName) VALUES (@EmployeeNO, @EmployeeName)
FETCH NEXT FROM Cur_Name
INTO @EmployeeNO, @EmployeeName
END
CLOSE Cur_Name
DEALLOCATE Cur_Name
DECLARE Cur_Name CURSOR FOR
SELECT EmployeeNO FROM #T
OPEN Cur_Name
FETCH NEXT FROM Cur_Name
INTO @EmployeeNO
WHILE @@FETCH_STATUS = 0
BEGIN
SET @iCurrent = 1
DECLARE @Time AS DATETIME
DECLARE Cur_Name1 CURSOR FOR
SELECT Time FROM T_Record WHERE EmployeeNo = @Employee
OPEN Cur_Name1
FETCH NEXT FROM Cur_Name1
INTO @Time
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Cur_Name1
INTO @Time
IF @iTotal >= @iCurrent
BEGIN
DECLARE SQL AS NVARCHAR(4000)
SET SQL = 'UPDATE #T SET Time' + CAST(@iCurrent AS NVARCHAR(5)) + ' = ''' + @Time + ''' WHERE EmployeeNo = ''' + @Employee + ''''
EXECUTE SP_EXECUTESQL SQL
END
ELSE
BEGIN
SET @iTotal = @iTotal + 1
ALERT TABLE ...
DECLARE SQL AS NVARCHAR(4000)
SET SQL = 'UPDATE #T SET Time' + CAST(@iCurrent AS NVARCHAR(5)) + ' = ''' + @Time + ''' WHERE EmployeeNo = ''' + @Employee + ''''
EXECUTE SP_EXECUTESQL SQL
END
SET @iCurrnet = @iCurrent + 1
END
CLOSE Cur_Name1
DEALLOCATE Cur_Name1
select a.bianhao,a.name,a.date,a.time,b.time,c.time
from tb a
left join tb b on a.bianhao=b.biaohao and a.name=b.name and a.date=b.date and a.time<>b.time
left join tb c on a.bianhao-c.bianhao and a.name=c.name and a.date=c.date and
a.time<>c.time and b.time<>c.time