42 lines
2.1 KiB
MySQL
42 lines
2.1 KiB
MySQL
|
|
CREATE OR ALTER VIEW [dbo].[Prj_V_ManMonthGantt]
|
||
|
|
AS
|
||
|
|
WITH base AS (
|
||
|
|
SELECT r.[TenantId], w.[ProjectId], r.[UserId], w.[Id] AS [WorkPackageId],
|
||
|
|
w.[Code], w.[Name], r.[Rate], DATEFROMPARTS(r.[Year], r.[Month], 1) AS [PeriodDate]
|
||
|
|
FROM [dbo].[Prj_T_WorkPackageMonthRate] r
|
||
|
|
INNER JOIN [dbo].[Prj_T_WorkPackage] w ON w.[Id] = r.[WorkPackageId] AND w.[IsDeleted] = 0
|
||
|
|
INNER JOIN [dbo].[Prj_T_Project] p ON p.[Id] = w.[ProjectId] AND p.[IsDeleted] = 0
|
||
|
|
WHERE r.[IsDeleted] = 0 AND r.[Rate] > 0
|
||
|
|
)
|
||
|
|
SELECT
|
||
|
|
CAST(CONCAT(CAST(b.[ProjectId] AS nvarchar(36)), '|', CAST(b.[UserId] AS nvarchar(36))) AS nvarchar(120)) AS [Id],
|
||
|
|
CAST(NULL AS nvarchar(120)) AS [ParentId],
|
||
|
|
b.[TenantId], b.[ProjectId], b.[UserId], CAST(NULL AS uniqueidentifier) AS [WorkPackageId],
|
||
|
|
CAST(0 AS bit) AS [IsDeleted], 1 AS [RowLevel],
|
||
|
|
CAST(COALESCE(MAX(u.[Name] + N' ' + u.[Surname]), MAX(u.[UserName])) AS nvarchar(256)) AS [Title],
|
||
|
|
MIN(b.[PeriodDate]) AS [StartDate],
|
||
|
|
EOMONTH(MAX(b.[PeriodDate])) AS [EndDate],
|
||
|
|
CAST(AVG(b.[Rate]) AS decimal(18, 4)) AS [Progress],
|
||
|
|
CAST(AVG(b.[Rate]) AS decimal(18, 4)) AS [AvgRate],
|
||
|
|
CAST(SUM(b.[Rate]) AS decimal(18, 4)) AS [TotalRate],
|
||
|
|
COUNT(DISTINCT b.[PeriodDate]) AS [MonthCount]
|
||
|
|
FROM base b
|
||
|
|
LEFT JOIN [dbo].[AbpUsers] u ON u.[Id] = b.[UserId]
|
||
|
|
GROUP BY b.[TenantId], b.[ProjectId], b.[UserId]
|
||
|
|
UNION ALL
|
||
|
|
SELECT
|
||
|
|
CAST(CONCAT(CAST(b.[ProjectId] AS nvarchar(36)), '|', CAST(b.[UserId] AS nvarchar(36)), '|', CAST(b.[WorkPackageId] AS nvarchar(36))) AS nvarchar(120)),
|
||
|
|
CAST(CONCAT(CAST(b.[ProjectId] AS nvarchar(36)), '|', CAST(b.[UserId] AS nvarchar(36))) AS nvarchar(120)),
|
||
|
|
b.[TenantId], b.[ProjectId], b.[UserId], b.[WorkPackageId],
|
||
|
|
CAST(0 AS bit), 2,
|
||
|
|
CAST(MAX(b.[Code]) + N' ' + MAX(b.[Name]) AS nvarchar(256)),
|
||
|
|
MIN(b.[PeriodDate]),
|
||
|
|
EOMONTH(MAX(b.[PeriodDate])),
|
||
|
|
CAST(AVG(b.[Rate]) AS decimal(18, 4)),
|
||
|
|
CAST(AVG(b.[Rate]) AS decimal(18, 4)),
|
||
|
|
CAST(SUM(b.[Rate]) AS decimal(18, 4)),
|
||
|
|
COUNT(DISTINCT b.[PeriodDate])
|
||
|
|
FROM base b
|
||
|
|
GROUP BY b.[TenantId], b.[ProjectId], b.[UserId], b.[WorkPackageId]
|
||
|
|
GO
|