Ver Fonte

Custom SQL View

Custom View
kparker há 7 meses atrás
pai
commit
9fc12e63be
1 ficheiros alterados com 90 adições e 0 exclusões
  1. 90 0
      OTView.sql

+ 90 - 0
OTView.sql

@@ -0,0 +1,90 @@
+DROP VIEW IF EXISTS OTBranchTracking
+GO 
+Create View OTBranchTracking
+as
+WITH AggregatedTime AS (
+    SELECT 
+        ta.CompanyID, 
+        ta.OwnerID,
+        ta.WeekID,
+        b.BAccountID AS EmployeeBAccount, 
+        b.AcctCD AS EmployeeCD, 
+        branch.AcctCD AS BranchCD, 
+        branch.AcctName AS BranchName,
+        SUM(ta.TimeSpent) AS TotalTimeSpent
+    FROM PMTimeActivity ta
+    JOIN EPTimeCard tc 
+        ON ta.CompanyID = tc.CompanyID AND ta.TimeCardCD = tc.TimeCardCD and tc.WeekID = ta.WeekID
+    JOIN EPEmployee e 
+        ON tc.CompanyID = e.CompanyID AND tc.EmployeeID = e.BAccountID
+    Join InventoryItem i
+        on e.CompanyID = i.CompanyID and e.LabourItemID = i.inventoryID
+    JOIN BAccount b 
+        ON e.CompanyID = b.CompanyID AND e.BAccountID = b.BAccountID
+    JOIN BAccount branch 
+        ON b.CompanyID = branch.CompanyID AND branch.BAccountID = b.ParentBAccountID
+    where ta.EarningTypeID not in ('HOL', 'PTO')
+    and ta.IsCorrected = 0
+    GROUP BY 
+        ta.CompanyID,
+        ta.OwnerID,
+        ta.WeekID,
+        b.BAccountID,
+        b.AcctCD,
+        branch.AcctCD,
+        branch.AcctName
+),
+EmployeeTime AS (
+    SELECT 
+        at.CompanyID,
+        at.OwnerID,
+        at.EmployeeBAccount,
+        at.EmployeeCD,
+        at.BranchCD,
+        at.BranchName,
+        at.WeekID,
+        at.TotalTimeSpent,
+        CASE 
+            WHEN at.TotalTimeSpent > 2400 THEN at.TotalTimeSpent - 2400 
+            ELSE 0 
+        END AS OverTimeInMinutes,
+        CASE 
+            WHEN at.TotalTimeSpent > 2400 THEN 2400 
+            ELSE at.TotalTimeSpent 
+        END AS RegularTimeInMinutes
+    FROM AggregatedTime at
+),
+BranchTime AS (
+    SELECT 
+        et.CompanyID, 
+        et.BranchCD, 
+        et.WeekID,
+        SUM(et.TotalTimeSpent) AS TotalTimeSpent,
+        SUM(et.OverTimeInMinutes) AS OverTimeInMinutes,
+        SUM(et.RegularTimeInMinutes) AS RegularTimeInMinutes,
+        CASE 
+            WHEN SUM(et.TotalTimeSpent) = 0 THEN NULL
+            ELSE ROUND(
+                CAST(SUM(et.OverTimeInMinutes) AS DECIMAL(10,2)) * 100.0 / 
+                CAST(SUM(et.TotalTimeSpent) AS DECIMAL(10,2)), 2
+            ) END AS OvertimePercent,
+			CASE 
+            WHEN SUM(et.TotalTimeSpent) = 0 THEN NULL
+            ELSE ROUND(
+                CAST(SUM(et.OverTimeInMinutes) AS DECIMAL(10,4)) / 
+                CAST(SUM(et.TotalTimeSpent) AS DECIMAL(10,4)), 4
+            )
+        END AS OvertimeRatio   
+    FROM EmployeeTime et
+    GROUP BY et.CompanyID, et.BranchCD, et.WeekID
+)
+SELECT 
+    CompanyID,
+    BranchCD,
+    WeekID,
+    TotalTimeSpent,
+    RegularTimeInMinutes,
+    OverTimeInMinutes,
+    OvertimePercent,
+	OvertimeRatio
+FROM BranchTime;