99 lines
2.4 KiB
Transact-SQL
99 lines
2.4 KiB
Transact-SQL
CREATE TABLE [dbo].[SitePerson_Checking_Statistics] (
|
|
[ProjectId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,
|
|
[UnitId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,
|
|
[UnitName] nvarchar(200) COLLATE Chinese_PRC_CI_AS NULL,
|
|
[WorkAreaId] nvarchar(max) COLLATE Chinese_PRC_CI_AS NULL,
|
|
[WorkAreaName] nvarchar(max) COLLATE Chinese_PRC_CI_AS NULL,
|
|
[WorkPostId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,
|
|
[WorkPostName] nvarchar(100) COLLATE Chinese_PRC_CI_AS NULL,
|
|
[IntoOutTime] datetime NULL,
|
|
[num] int NULL
|
|
)
|
|
ON [PRIMARY]
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[SitePerson_Checking_Statistics] SET (LOCK_ESCALATION = TABLE)
|
|
GO
|
|
|
|
CREATE NONCLUSTERED INDEX [ProjectId_Index]
|
|
ON [dbo].[SitePerson_Checking_Statistics] (
|
|
[ProjectId] ASC
|
|
)
|
|
GO
|
|
|
|
CREATE NONCLUSTERED INDEX [UnitId_Index]
|
|
ON [dbo].[SitePerson_Checking_Statistics] (
|
|
[UnitId] ASC
|
|
)
|
|
GO
|
|
|
|
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20220601-105641]
|
|
ON [dbo].[SitePerson_Checking_Statistics] (
|
|
[ProjectId] ASC,
|
|
[IntoOutTime] ASC
|
|
)
|
|
GO
|
|
|
|
CREATE NONCLUSTERED INDEX [WorkPostId_Index]
|
|
ON [dbo].[SitePerson_Checking_Statistics] (
|
|
[WorkPostId] ASC
|
|
)
|
|
GO
|
|
|
|
CREATE NONCLUSTERED INDEX [IntoOutTime_Index]
|
|
ON [dbo].[SitePerson_Checking_Statistics] (
|
|
[IntoOutTime] ASC
|
|
)
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INSERT INTO dbo.SitePerson_Checking_Statistics (
|
|
ProjectId,
|
|
UnitId,
|
|
UnitName,
|
|
WorkAreaId,
|
|
WorkAreaName,
|
|
WorkPostId,
|
|
WorkPostName,
|
|
IntoOutTime,
|
|
num
|
|
)
|
|
SELECT
|
|
a.ProjectId,
|
|
b.UnitId,
|
|
b.UnitName,
|
|
b.WorkAreaId,
|
|
b.WorkAreaName,
|
|
p.WorkPostId,
|
|
w.WorkPostName,
|
|
CAST(b.IntoOutTime AS DATE) AS IntoOutTime,
|
|
COUNT(1) AS num
|
|
FROM (
|
|
SELECT
|
|
PersonId,
|
|
CAST(IntoOutTime AS DATE) AS IntoOutTime,
|
|
MAX(CheckingId) AS MaxCheckingId,
|
|
ProjectId
|
|
FROM SitePerson_Checking
|
|
GROUP BY PersonId, CAST(IntoOutTime AS DATE), ProjectId
|
|
) a
|
|
JOIN SitePerson_Checking b ON a.MaxCheckingId = b.CheckingId
|
|
LEFT JOIN SitePerson_Person p ON a.PersonId = p.PersonId
|
|
LEFT JOIN Base_WorkPost w ON p.WorkPostId = w.WorkPostId
|
|
LEFT JOIN Base_Project bp ON a.ProjectId = bp.ProjectId
|
|
where bp.ProjectState='1'
|
|
GROUP BY
|
|
a.ProjectId,
|
|
b.UnitId,
|
|
b.UnitName,
|
|
b.WorkAreaId,
|
|
b.WorkAreaName,
|
|
p.WorkPostId,
|
|
w.WorkPostName,
|
|
CAST(b.IntoOutTime AS DATE);"; |