CNCEC_SUBQHSE_WUHUAN/DataBase/版本日志/SUBQHSE_V2025-11-30-gh(施工人力...

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);";