1
|
SELECT
|
2
|
CONVERT(INT,'')as[ROW],
|
3
|
--INI DB BARU
|
4
|
CONVERT(int,'')as[id],
|
5
|
CONVERT(nvarchar(max),'')as[badgenumber],
|
6
|
CONVERT(nvarchar(max),'')as[userid],
|
7
|
CONVERT(datetime,'')as[checktime],
|
8
|
CONVERT(nvarchar(max),'')as[checktype],
|
9
|
CONVERT(nvarchar(max),'')as[verifycode],
|
10
|
CONVERT(nvarchar(max),'')as[sn]
|
11
|
|
12
|
INTO #temp
|
13
|
--CREATE ROWS IN NEW ESS TABLE TEMPO
|
14
|
DELETE #temp
|
15
|
DECLARE @ROWSNUMBER INT = (SELECT TOP(1) CONVERT(INT, ROW_NUMBER() OVER(ORDER BY id ASC)) AS Num FROM wdms_db.dbo.checkinout ORDER BY Num DESC)
|
16
|
DECLARE @i int = 1
|
17
|
WHILE @i <= @ROWSNUMBER
|
18
|
BEGIN
|
19
|
INSERT INTO #temp VALUES ( @i ,'','','','','','','')
|
20
|
SET @i = @i + 1
|
21
|
END
|
22
|
--INSERT DATA ROWS IN NEW ESS TABLE TEMPO
|
23
|
UPDATE #temp SET
|
24
|
id = a.id,
|
25
|
badgenumber = a.badgenumber,
|
26
|
userid = a.userid,
|
27
|
checktime = a.checktime,
|
28
|
checktype = a.checktype,
|
29
|
verifycode = a.verifycode,
|
30
|
sn = a.sn
|
31
|
FROM(
|
32
|
SELECT ROW_NUMBER() OVER(ORDER BY id ASC) AS Num, * FROM wdms_db.dbo.checkinout)a WHERE a.Num=#temp.[ROW]
|
33
|
|
34
|
|
35
|
|
36
|
|
37
|
--INSERT INTO NEW TABLE ESS
|
38
|
--INSERT INTO MinovaES_AJTM_Pertalife_Development.dbo.[PHRPA0019]
|
39
|
|
40
|
select
|
41
|
temp.userid
|
42
|
,CONVERT(varchar(8), temp.checktime, 112) as CheckTime
|
43
|
,startdate.checktime as StartDate
|
44
|
,enddate.checktime as EndDate
|
45
|
into #temp2
|
46
|
from #temp temp
|
47
|
left join #temp startdate on temp.id=startdate.id and startdate.checktype='0'
|
48
|
left join #temp enddate on temp.id=enddate.id and enddate.checktype='1'
|
49
|
where temp.checktype in ('0','1')
|
50
|
and CONVERT(date, temp.checktime) = CONVERT(date, GETDATE())
|
51
|
|
52
|
--select * from #temp2
|
53
|
|
54
|
|
55
|
--select * from #temp where userid='10340122'
|
56
|
|
57
|
select
|
58
|
min(CONVERT(varchar(8), StartDate, 112)) as StartDate
|
59
|
,max(CONVERT(varchar(8), EndDate, 112)) as EndDate
|
60
|
,userid as EmployeeID
|
61
|
,min(FORMAT(StartDate, 'HHmm')) as StartTime
|
62
|
,max(FORMAT(EndDate, 'HHmm')) as EndTime
|
63
|
,'1000' as AttendanceType
|
64
|
,'Migrasi From WDMS' as Notes
|
65
|
,userid as CreateBy
|
66
|
,FORMAT(GETDATE(), 'yyyyMMddHHmmss') as CreateDate
|
67
|
,userid as ChangeBy
|
68
|
,FORMAT(GETDATE(), 'yyyyMMddHHmmss') as ChangeDate
|
69
|
,NULL as AuditorFlag
|
70
|
into #temp3
|
71
|
from #temp2
|
72
|
group by userid, CheckTime
|
73
|
order by userid,CheckTime
|
74
|
|
75
|
--INSERT INTO NEW TABLE ESS
|
76
|
MERGE INTO MinovaES_AJTM_Pertalife_Development.dbo.[PHRPA0019] AS Target
|
77
|
USING (
|
78
|
SELECT
|
79
|
CASE WHEN StartDate IS NULL THEN EndDate ELSE StartDate END AS StartDate,
|
80
|
CASE WHEN StartDate IS NULL THEN EndDate ELSE StartDate END AS EndDate,
|
81
|
EmployeeID,
|
82
|
StartTime,
|
83
|
EndTime,
|
84
|
AttendanceType,
|
85
|
Notes,
|
86
|
CreateBy,
|
87
|
CreateDate,
|
88
|
ChangeBy,
|
89
|
ChangeDate,
|
90
|
AuditorFlag
|
91
|
FROM #temp3
|
92
|
) AS Source ON Target.StartDate = Source.StartDate COLLATE DATABASE_DEFAULT
|
93
|
AND Target.EndDate = Source.EndDate COLLATE DATABASE_DEFAULT
|
94
|
AND Target.EmployeeID = Source.EmployeeID COLLATE DATABASE_DEFAULT
|
95
|
WHEN NOT MATCHED THEN
|
96
|
INSERT (StartDate, EndDate, EmployeeID, StartTime, EndTime, AttendanceType, Notes, CreateBy, CreateDate, ChangeBy, ChangeDate, AuditorFlag)
|
97
|
VALUES (Source.StartDate, Source.EndDate, Source.EmployeeID, Source.StartTime, Source.EndTime, Source.AttendanceType, Source.Notes, Source.CreateBy, Source.CreateDate, Source.ChangeBy, Source.ChangeDate, Source.AuditorFlag);
|
98
|
|
99
|
|
100
|
DROP TABLE #temp
|
101
|
drop table #temp2
|
102
|
drop table #temp3
|
103
|
|
104
|
SELECT * FROM MinovaES_AJTM_Pertalife_Development.[dbo].[PHRPA0019] where Notes='Migrasi From WDMS' order by EmployeeID,StartDate
|
105
|
|