Labels

Apache Hadoop (3) ASP.NET (2) AWS S3 (2) Batch Script (3) BigQuery (21) BlobStorage (1) C# (3) Cloudera (1) Command (2) Data Model (3) Data Science (1) Django (1) Docker (1) ETL (7) Google Cloud (5) GPG (2) Hadoop (2) Hive (3) Luigi (1) MDX (21) Mongo (3) MYSQL (3) Pandas (1) Pentaho Data Integration (5) PentahoAdmin (13) Polybase (1) Postgres (1) PPS 2007 (2) Python (13) R Program (1) Redshift (3) SQL 2016 (2) SQL Error Fix (18) SQL Performance (1) SQL2012 (7) SQOOP (1) SSAS (20) SSH (1) SSIS (42) SSRS (17) T-SQL (75) Talend (3) Vagrant (1) Virtual Machine (2) WinSCP (1)

Monday, January 31, 2011

Get Sum of Parent and Child using ROLL UP function

Using below queries we can find the sum of any value for parent level hierarchy and child level hierarchies:

DECLARE @STARTDATE DATETIME
DECLARE @TODATE DATETIME


SET @STARTDATE = '1/1/2011'
SET @TODATE = '1/31/2011'

SELECT      CASE WHEN (GROUPING(PP.ProjectName)= 1) THEN 'Overall Total'
            ELSE PP.ProjectName END  AS Projects
            ,CASE WHEN (GROUPING(UU.Firstname) = 1) Then 'Project Total'
            ELSE UU.Firstname END AS Employee
            ,SUM(ISNULL(Duration,0)) AS BookedHrs
FROM [Dotnet2005].[Timesheet].dbo.Timetrack TT
JOIN [Dotnet2005].[Timesheet].dbo.Projects PP ON PP.ProjectId = TT.ProjectID
JOIN [Dotnet2005].[Timesheet].dbo.[User] UU ON UU.UserID = TT.UserID
WHERE TT.Datee >= @STARTDATE AND TT.Datee <= @TODATE
GROUP BY PP.ProjectName
             ,UU.Firstname WITH ROLLUP
ORDER BY PP.Projectname


=========================================================================
DECLARE @STARTDATE DATETIME
DECLARE @TODATE DATETIME

SET @STARTDATE = '1/1/2011'
SET @TODATE = '1/31/2011'

SELECT      CASE WHEN (GROUPING(DD.DepartmentName) = 1) THEN 'ALL'
            ELSE DD.DepartmentName END AS 'Department'
            ,CASE WHEN (GROUPING(CA.CostTypeName) = 1) THEN 'Department Total'
            ELSE CA.CostTypeName END AS 'Cost Type Total'
            ,SUM(ISNULL(Duration,0)) AS BookedHrs
FROM [Dotnet2005].[Timesheet].dbo.Timetrack TT
JOIN [Dotnet2005].[Timesheet].dbo.[User] UU ON UU.UserID = TT.UserID
JOIN [Dotnet2005].[Timesheet].dbo.[Department] DD ON DD.DepartmentID = UU.DepartmentID
JOIN [Dotnet2005].[Timesheet].dbo.[Tasks] TA ON TA.Taskid = TT.Taskid
JOIN [Dotnet2005].[Timesheet].dbo.[CostType] CA ON CA.CostTypeid = TA.CostTypeid
WHERE TT.Datee >= @STARTDATE AND TT.Datee <= @TODATE
GROUP BY DD.DepartmentName
            ,CA.CostTypeName WITH ROLLUP
ORDER BY DD.DepartmentName
            ,CA.CostTypeName       
           


No comments:

Post a Comment