efficient way to write this query - audit histroy on created and modified - sql

just wondering if there is a better and more efficient way of creating this query as the below is taking a long time as this query is being run for every table in the database catalogue. Thank you
Select N'MSCRM_REPORTING' As [Database], N'dbo' As [Schema], N'apuk_erqanswerBase' As [Table], N'ModifiedOn' As ChangeType,
sum(case when DATEADD(dd, DATEDIFF(dd, 0,ModifiedOn), 0) between DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) -7 AND DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) THEN 1 ELSE 0 END) [0-7 Days],
sum(case when DATEADD(dd, DATEDIFF(dd, 0,ModifiedOn), 0) between DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)-28 AND DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)- 8 THEN 1 ELSE 0 END) [8-28 Days],
sum(case when DATEADD(dd, DATEDIFF(dd, 0,ModifiedOn), 0) between DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)-84 AND DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)-29 THEN 1 ELSE 0 END) [29-84 Days],
sum(case when DATEADD(dd, DATEDIFF(dd, 0,ModifiedOn), 0) between DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)-182 AND DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)-85 THEN 1 ELSE 0 END) [85-182 Days],
sum(case when DATEADD(dd, DATEDIFF(dd, 0, ModifiedOn), 0) BETWEEN convert(datetime,0) and DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) - 183 THEN 1 ELSE 0 END) [183+],
sum(case when ModifiedOn is null then 1 else 0 end) [NullRows],
count(*) as [RowCount]
From MSCRM_REPORTING.dbo.apuk_erqanswerBase

Having multiple DATEDIFFs will be costly, so why not try getting the difference between the dates in a subquery and using that within the SELECT:
Select N'MSCRM_REPORTING' As [Database], N'dbo' As [Schema], N'apuk_erqanswerBase' As [Table], N'ModifiedOn' As ChangeType,
sum(case when a.Days BETWEEN 0 AND 7 THEN 1 ELSE 0 END) [0-7 Days],
sum(case when a.Days BETWEEN 8 AND 28 THEN 1 ELSE 0 END) [8-28 Days],
sum(case when a.Days BETWEEN 29 AND 84 THEN 1 ELSE 0 END) [29-84 Days],
sum(case when a.Days BETWEEN 85 AND 182 THEN 1 ELSE 0 END) [85-182 Days],
sum(case when a.Days >= 183 THEN 1 ELSE 0 END) [183+],
sum(case when ModifiedOn is null then 1 else 0 end) [NullRows],
count(*) as [RowCount]
From
(
Select DATEDIFF(dd, ModifiedOn, getdate()) AS [Days],
ModifiedOn
From MSCRM_REPORTING.dbo.apuk_erqanswerBase
) a

You can try this as well:
Select N'MSCRM_REPORTING' As [Database],
N'dbo' As [Schema],
N'apuk_erqanswerBase' As [Table],
N'ModifiedOn' As ChangeType,
sum(case when DATEDIFF(dd, ModifiedOn, getdate()) BETWEEN 0 AND 7 THEN 1 ELSE 0 END) [0-7 Days],
sum(case when DATEDIFF(dd, ModifiedOn, getdate()) BETWEEN 8 AND 28 THEN 1 ELSE 0 END) [8-28 Days],
sum(case when DATEDIFF(dd, ModifiedOn, getdate()) BETWEEN 29 AND 84 THEN 1 ELSE 0 END) [29-84 Days],
---------------------
from MSCRM_REPORTING.dbo.apuk_erqanswerBase

Related

Get the last 14 days of records not included current date

I'm having trouble with the dates. I have here my code to count the records for the last 14 days from the current date but not including TODAY in the display.
Here's my SQL query
SELECT
a.TrackingCode,
a.SegmentName,
a.Brand,
a.DateAdded,
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 1 THEN 1 ELSE NULL END) as "Day_1",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 2 THEN 1 ELSE NULL END) as "Day_2",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 3 THEN 1 ELSE NULL END) as "Day_3",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 4 THEN 1 ELSE NULL END) as "Day_4",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 5 THEN 1 ELSE NULL END) as "Day_5",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 6 THEN 1 ELSE NULL END) as "Day_6",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 7 THEN 1 ELSE NULL END) as "Day_7",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 8 THEN 1 ELSE NULL END) as "Day_8",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 9 THEN 1 ELSE NULL END) as "Day_9",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 10 THEN 1 ELSE NULL END) as "Day_10",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 11 THEN 1 ELSE NULL END) as "Day_11",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 12 THEN 1 ELSE NULL END) as "Day_12",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 13 THEN 1 ELSE NULL END) as "Day_13",
COUNT(CASE WHEN DATEDIFF(DD, a.DateAdded, GETDATE()) = 14 THEN 1 ELSE NULL END) as "Day_14"
FROM
Journey_Injection_Logger_Base a
WHERE
a.DateAdded >= DATEADD(DD, -14, GETDATE())
AND a.DateAdded <= GETDATE()
GROUP BY
a.TrackingCode, a.SegmentName, a.Brand, a.DateAdded
The Day_1 is the yesterday's date. The problem is that when the next day comes it will add the new current date and my records for the Day_1 is not moving.
Sample output
enter image description here
From the above image of sample output. The record 2 should be in 4/14 TUE

Using Count with Case expression

I'm probably going to torn apart for asking but why do these produce different results when comparing Claims_Completed in the 2 different scenarios? The Claims_Completed values are the same as Claims_Received in both scenarios.
SELECT
DischargeType
,COUNT(CASE WHEN (DateReceived > '2/1/2015' AND DateReceived < DATEADD(dd, 1, '2/28/2015')) THEN 1 ELSE 0 END) AS Claims_Received
,COUNT(CASE WHEN (DateCompleted > '2/1/2015' AND DateCompleted < DATEADD(dd, 1, '2/28/2015')) THEN 1 ELSE 0 END) AS Claims_Completed
FROM Claims GROUP BY DischargeType
Scenario 2:
SELECT COUNT(*) AS Claims_Received
FROM Claims
WHERE DateReceived > '2/1/2015' AND DateReceived < DATEADD(dd, 1, '2/28/2015')
GROUP BY DischargeType
SELECT COUNT(*) AS Claims_Completed
FROM Claims
WHERE DateCompleted > '2/1/2015' AND DateCompleted < DATEADD(dd, 1, '2/28/2015')
GROUP BY DischargeType
You need sum() instead of count():
SELECT DischargeType,
SUM(CASE WHEN (DateReceived > '2/1/2015' AND
DateReceived < DATEADD(dd, 1, '2/28/2015'))
THEN 1 ELSE 0
END) AS Claims_Received,
SUM(CASE WHEN (DateCompleted > '2/1/2015' AND
DateCompleted < DATEADD(dd, 1, '2/28/2015'))
THEN 1 ELSE 0
END) AS Claims_Completed
FROM Claims
GROUP BY DischargeType;
Because count() misinterpret here, as it will count 0 as value or as data.
COUNT will count all non-null values from the sequence. Since 1 and 0 are both non-null it's counting everything. One option is to use NULL instead of 0:
SELECT
DischargeType
,COUNT(CASE WHEN (DateReceived > '2/1/2015'
AND DateReceived < DATEADD(dd, 1, '2/28/2015'))
THEN 1 ELSE NULL END) AS Claims_Received
,COUNT(CASE WHEN (DateCompleted > '2/1/2015'
AND DateCompleted < DATEADD(dd, 1, '2/28/2015'))
THEN 1 ELSE NULL END) AS Claims_Completed
FROM Claims
GROUP BY DischargeType

When 'Select All' Parameter ticked all data is not showing

This is a glimpse of what my report look likes, a series of charts, where you can select a country and a date range of either 12 months rolling or 36 months rolling.
The report is working ok in regards to selecting one country and seeing the different data within the 12 or 36 months date range.
The problem comes when I 'Select All' countries. What I want is the totals of all the countries to be represented on the graphs. As you see below, with all countries selected the data on the graph has not changed from the image above.
The Country parameter
This is my stored procedure
ALTER PROCEDURE [name] #Country VARCHAR(max)
,#DateRange VARCHAR(max)
AS
BEGIN
SELECT country
,[yyyy-mm]
,[12Months]
,[36Months]
,[Population]
,[Employed]
FROM (
SELECT CASE [countryID]
WHEN '800002'
THEN 'UK'
WHEN '800003'
THEN 'France'
WHEN '800004'
THEN 'Germany'
ELSE 'N/A'
END AS country
,Convert(CHAR(7), [DateTimeOfCall], 121) "yyyy-mm"
,CASE
WHEN datetimeofcall BETWEEN Dateadd(Month, Datediff(Month, 0, DATEADD(m, - 12, current_timestamp)), 0)
AND Dateadd(Month, Datediff(Month, 0, DATEADD(m, 0, current_timestamp)), 0)
THEN 'y'
ELSE 'n'
END AS [12Months]
,CASE
WHEN datetimeofcall BETWEEN Dateadd(Month, Datediff(Month, 0, DATEADD(m, - 36, current_timestamp)), 0)
AND Dateadd(Month, Datediff(Month, 0, DATEADD(m, 0, current_timestamp)), 0)
THEN 'y'
ELSE 'n'
END AS [36Months]
,sum(CASE
WHEN [CategoryID] = '180003'
AND [CauseID] IN (
'700002'
,'700003'
)
AND [TypeID] = '100002'
AND [PopTypeID] BETWEEN '170002'
AND '170019'
THEN 1
ELSE 0
END) Population
,sum(CASE
WHEN [EmpID] = '210002'
THEN 1
ELSE 0
END) AS Employed
FROM [dbo].[country]
WHERE STATUS = '1'
GROUP BY [countryID]
,Convert(CHAR(7), [DateTimeOfCall], 121)
,CASE
WHEN datetimeofcall BETWEEN Dateadd(Month, Datediff(Month, 0, DATEADD(m, - 12, current_timestamp)), 0)
AND Dateadd(Month, Datediff(Month, 0, DATEADD(m, 0, current_timestamp)), 0)
THEN 'y'
ELSE 'n'
END
,CASE
WHEN datetimeofcall BETWEEN Dateadd(Month, Datediff(Month, 0, DATEADD(m, - 36, current_timestamp)), 0)
AND Dateadd(Month, Datediff(Month, 0, DATEADD(m, 0, current_timestamp)), 0)
THEN 'y'
ELSE 'n'
END
) a
WHERE country in (#country)
AND (
(
#DateRange = 12
AND [12Months] = 'Y'
)
OR (
#DateRange = 36
AND [36Months] = 'Y'
)
)
END
And this is what the output is
country yyyy-mm Population Employed 12months 36months
uk 2016-06 56 43 y y
france 2016-06 40 22 y y
Germany 2016-06 73 32 y y
uk 2015-06 45 10 n y
france 2015-06 30 11 n y
Germany 2015-06 76 56 n y
AND SO ON......
All help appreciated, thank you.

How to crosstab my query so months show in colums in SQL Server

IF OBJECT_ID('tempdb.dbo.#time') IS NOT NULL
DROP TABLE #time
DECLARE #StartDate DATETIME = '06/01/2015',
#StopDate DATETIME = '09/30/2015';
SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, dmtrans.DTTDAT), 0) AS 'time',
dmtrans.DTACRO as 'Loc_Acronym',
dmloc.DLONAME as 'Location',
dmdoctr.DDRNPI as 'NPI_Number',
(COALESCE(dmdoctr.DDRNAME,'')+' '+COALESCE(dmdoctr.DDRTITL,'')) as Provider,
sum(dmtrans.DTCNTR) as 'Visits',
sum(RVU.TotalRVU) as 'Total_RVUs',
(nullif(sum(RVU.TotalRVU),0)/nullif(sum(dmtrans.DTCNTR),0)) as 'Avg_RVU'
INTO
#time
FROM
dmtrans
LEFT OUTER JOIN
dmloc ON dmtrans.DTACRO = dmloc.DLOACRO
AND dmtrans.DTLOC = dmloc.DLONUM
LEFT OUTER JOIN
cptxref ON dmtrans.DTPROC = cptxref.chcod
LEFT OUTER JOIN
dmdoctr ON dmtrans.DTACRO = dmdoctr.DDRACRO
AND dmtrans.DTLOC = dmdoctr.DDRLOC
AND dmtrans.DTRPTDR = dmdoctr.DDRNUM
LEFT OUTER JOIN
RVU ON cptxref.chmcd1 = RVU.cptcode
AND RVU.recordname = '2006'
WHERE
(dmtrans.DTTTYP = 'C' )
AND (dmtrans.DTTDAT >= #StartDate)
AND (dmtrans.DTTDAT <= #StopDate)
AND (dmtrans.DTMODF <> '*p')
AND (dmtrans.DTACRO = 'ROS')
GROUP BY
dmdoctr.DDRNAME, dmdoctr.DDRNPI, dmtrans.DTTDAT,
dmtrans.DTACRO, dmloc.DLONAME, dmdoctr.DDRTITL,
dmtrans.DTPCPNO, dmtrans.DTRPTDR, dmtrans.DTCNTR
ORDER BY
dmdoctr.DDRNAME, dmtrans.DTACRO, dmtrans.DTTDAT
IF OBJECT_ID('tempdb.dbo.#time2') IS NOT NULL
DROP TABLE #time2
Select
Time,
Loc_Acronym as 'Loc_Acronym',
Location as 'Location',
NPI_Number as NPI_Number,
Provider as Provider,
sum(Visits) as 'Visits',
sum(Total_RVUs) as 'Total_RVUs',
Round(nullif(sum(Total_RVUs),0)/nullif(sum(Visits),0),2) as 'Avg RVU',
DATENAME (M,[time]) as 'Month' into #time2
from
#time
group by
time, Loc_Acronym, Location, Provider,NPI_Number
order by
Provider
select *
from #time2
So I never work on a crosstab function just learn of it's existence thru a google search. So my current result:
Time Loc_Acronym Location NPI_Number Provider Visits Total_RVUs Avg RVU Month
2015-06-01 ROS LOVELACE REG MED CTR- ROSWELL 1538198924 ARRINGTON, ALAN H M.D. 1 4.01 4.010000 June
2015-07-01 ROS LOVELACE REG MED CTR- ROSWELL 1982631560 ATKINS, ARNOLD M.D. 1 4.01 4.010000 July
2015-09-01 ROS LOVELACE REG MED CTR- ROSWELL 1982631560 ATKINS, ARNOLD M.D. 1 1.64 1.640000 September
2015-06-01 ROS LOVELACE REG MED CTR- ROSWELL NULL CORRIZ, STEPHEN M D.O. 303 799.92 2.640000 June
2015-07-01 ROS LOVELACE REG MED CTR- ROSWELL NULL CORRIZ, STEPHEN M D.O. 211 571.48 2.710000 July
2015-08-01 ROS LOVELACE REG MED CTR- ROSWELL NULL CORRIZ, STEPHEN M D.O. 235 664.02 2.830000 August
2015-09-01 ROS LOVELACE REG MED CTR- ROSWELL NULL CORRIZ, STEPHEN M D.O. 257 691.11 2.690000 September
So my desired result is to keep the current columns but instead of having the months all in one column, I will like to for the months, I'll like to have it in the header row. How can I do this in my extensive drop tables.
Simply add conditional CASE/WHEN for each month to output Month Columns all in one select query. By the way, you did not mention what you want in those month columns. Below I use count but consider any other aggregates.
SELECT
DATEADD(MONTH, 0, DATEDIFF(MONTH, 0, dmtrans.DTTDAT)) AS 'time',
dmtrans.DTACRO as 'Loc_Acronym',
dmloc.DLONAME as 'Location',
dmdoctr.DDRNPI as 'NPI_Number',
(COALESCE(dmdoctr.DDRNAME,'')+' '+COALESCE(dmdoctr.DDRTITL,'')) as Provider,
sum(dmtrans.DTCNTR) as 'Visits',
sum(RVU.TotalRVU) as 'Total_RVUs',
(nullif(sum(RVU.TotalRVU),0)/nullif(sum(dmtrans.DTCNTR),0)) as 'Avg_RVU',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 1 THEN 1 ELSE 0) As 'January',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 2 THEN 1 ELSE 0) As 'February',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 3 THEN 1 ELSE 0) As 'March',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 4 THEN 1 ELSE 0) As 'April',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 5 THEN 1 ELSE 0) As 'May',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 6 THEN 1 ELSE 0) As 'June',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 7 THEN 1 ELSE 0) As 'July',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 8 THEN 1 ELSE 0) As 'August',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 9 THEN 1 ELSE 0) As 'September',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 10 THEN 1 ELSE 0) As 'October',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 11 THEN 1 ELSE 0) As 'November',
SUM(CASE WHEN DatePart(MONTH, dmtrans.DTTDAT) = 12 THEN 1 ELSE 0) As 'December'
FROM
dmtrans
LEFT OUTER JOIN
dmloc ON dmtrans.DTACRO = dmloc.DLOACRO
AND dmtrans.DTLOC = dmloc.DLONUM
LEFT OUTER JOIN
cptxref ON dmtrans.DTPROC = cptxref.chcod
LEFT OUTER JOIN
dmdoctr ON dmtrans.DTACRO = dmdoctr.DDRACRO
AND dmtrans.DTLOC = dmdoctr.DDRLOC
AND dmtrans.DTRPTDR = dmdoctr.DDRNUM
LEFT OUTER JOIN
RVU ON cptxref.chmcd1 = RVU.cptcode
AND RVU.recordname = '2006'
WHERE (dmtrans.DTTTYP = 'C' )
AND (dmtrans.DTTDAT >= #StartDate)
AND (dmtrans.DTTDAT <= #StopDate)
AND (dmtrans.DTMODF <> '*p')
AND (dmtrans.DTACRO = 'ROS')
GROUP BY
dmdoctr.DDRNAME, dmdoctr.DDRNPI, dmtrans.DTTDAT,
dmtrans.DTACRO, dmloc.DLONAME, dmdoctr.DDRTITL,
dmtrans.DTPCPNO, dmtrans.DTRPTDR, dmtrans.DTCNTR
ORDER BY
dmdoctr.DDRNAME, dmtrans.DTACRO, dmtrans.DTTDAT
USE cfsdwhd;
WITH MyCTE
AS
(
SELECT Dateadd(MONTH, Datediff(MONTH, 0, dmtrans.DTTDAT), 0) AS StartOfMonth,
dmtrans.DTACRO AS 'Loc_Acronym',
dmloc.DLONAME AS 'Location',
dmdoctr.DDRNPI AS 'NPI_Number',
( COALESCE(dmdoctr.DDRNAME, '') + ' '
+ COALESCE(dmdoctr.DDRTITL, '') ) AS Provider,
Sum(dmtrans.DTCNTR) AS 'Visits',
Sum(RVU.TotalRVU) AS 'Total_RVUs',
ISNULL(( NULLIF(Sum(RVU.TotalRVU), 0) / NULLIF(Sum(dmtrans.DTCNTR), 0) ), 0.00) AS 'Avg_RVU'
FROM dmtrans
LEFT OUTER JOIN dmloc
ON dmtrans.DTACRO = dmloc.DLOACRO
AND dmtrans.DTLOC = dmloc.DLONUM
LEFT OUTER JOIN cptxref
ON dmtrans.DTPROC = cptxref.chcod
LEFT OUTER JOIN dmdoctr
ON dmtrans.DTACRO = dmdoctr.DDRACRO
AND dmtrans.DTLOC = dmdoctr.DDRLOC
AND dmtrans.DTRPTDR = dmdoctr.DDRNUM
LEFT OUTER JOIN RVU
ON cptxref.chmcd1 = RVU.cptcode
AND RVU.recordname = '2006'
WHERE ( dmtrans.DTTTYP = 'C' )
AND ( dmtrans.DTTDAT >= '05/01/2015')
AND ( dmtrans.DTTDAT <= '09/30/2015')
AND ( dmtrans.DTMODF <> '*p' )
AND ( dmtrans.DTACRO = 'MOR' )
GROUP BY dmtrans.DTACRO,
dmloc.DLONAME,
dmdoctr.DDRNPI,
( COALESCE(dmdoctr.DDRNAME, '') + ' '
+ COALESCE(dmdoctr.DDRTITL, '') ) ,
Dateadd(MONTH, Datediff(MONTH, 0, dmtrans.DTTDAT), 0)
)
SELECT 1 As SortOrder, T1.Loc_Acronym,T1.Location,T1.NPI_Number,T1.Provider,'Sum Of Visits' AS [Values],
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 1 THEN Visits ELSE 0 END) AS 'January',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 2 THEN Visits ELSE 0 END) AS 'February',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 3 THEN Visits ELSE 0 END) AS 'March',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 4 THEN Visits ELSE 0 END) AS 'April',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 5 THEN Visits ELSE 0 END) AS 'May',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 6 THEN Visits ELSE 0 END) AS 'June',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 7 THEN Visits ELSE 0 END) AS 'July',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 8 THEN Visits ELSE 0 END) AS 'August',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 9 THEN Visits ELSE 0 END) AS 'September',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 10 THEN Visits ELSE 0 END) AS 'October',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 11 THEN Visits ELSE 0 END) AS 'November',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 12 THEN Visits ELSE 0 END) AS 'December'
from mycte T1
GROUP BY T1.Loc_Acronym,T1.Location,T1.NPI_Number,T1.Provider
UNION ALL
SELECT 2 As SortOrder, T1.Loc_Acronym,T1.Location,T1.NPI_Number,T1.Provider,'Sum Of Total_RVUs' AS [Values],
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 1 THEN Total_RVUs ELSE 0 END) AS 'January',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 2 THEN Total_RVUs ELSE 0 END) AS 'February',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 3 THEN Total_RVUs ELSE 0 END) AS 'March',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 4 THEN Total_RVUs ELSE 0 END) AS 'April',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 5 THEN Total_RVUs ELSE 0 END) AS 'May',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 6 THEN Total_RVUs ELSE 0 END) AS 'June',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 7 THEN Total_RVUs ELSE 0 END) AS 'July',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 8 THEN Total_RVUs ELSE 0 END) AS 'August',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 9 THEN Total_RVUs ELSE 0 END) AS 'September',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 10 THEN Total_RVUs ELSE 0 END) AS 'October',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 11 THEN Total_RVUs ELSE 0 END) AS 'November',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 12 THEN Total_RVUs ELSE 0 END) AS 'December'
from mycte T1
GROUP BY T1.Loc_Acronym,T1.Location,T1.NPI_Number,T1.Provider
UNION ALL
SELECT 3 As SortOrder, T1.Loc_Acronym,T1.Location,T1.NPI_Number,T1.Provider,'Sum Of Avg RVU' AS [Values],
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 1 THEN Avg_RVU ELSE 0 END) AS 'January',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 2 THEN Avg_RVU ELSE 0 END) AS 'February',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 3 THEN Avg_RVU ELSE 0 END) AS 'March',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 4 THEN Avg_RVU ELSE 0 END) AS 'April',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 5 THEN Avg_RVU ELSE 0 END) AS 'May',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 6 THEN Avg_RVU ELSE 0 END) AS 'June',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 7 THEN Avg_RVU ELSE 0 END) AS 'July',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 8 THEN Avg_RVU ELSE 0 END) AS 'August',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 9 THEN Avg_RVU ELSE 0 END) AS 'September',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 10 THEN Avg_RVU ELSE 0 END) AS 'October',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 11 THEN Avg_RVU ELSE 0 END) AS 'November',
SUM(CASE WHEN DatePart(MONTH, DATEADD(MONTH, DATEDIFF(MONTH, 0, StartOfMonth), 0)) = 12 THEN Avg_RVU ELSE 0 END) AS 'December'
from mycte T1
GROUP BY T1.Loc_Acronym,T1.Location,T1.NPI_Number,T1.Provider
ORDER BY Loc_Acronym,Provider,SortOrder}
This is what I derived to get the desired result. Even though I wanted to include a case statement that was dynamic with my where clause dates that only outputted months in that range. I can live with the result. Thank you all for your input.

SQL Grouping and DATEDIFF Issue

The query below is using Axosoft's OnTime DB with a few custom fields. If you ignore the custom fields and have some sample data this should work.
What I'm trying to do:
Return a query that has a count(total) number of open tickets that have been open during these time frames:
Less than a day
1 Day
2 Days
3 Days
4 Days
5 Days
6 Days
More than a week
this is for a ticket aging query. Here's the query below:
DECLARE #endDate DateTime;
SET #endDate = '03/18/2011';
WITH
WorkItems AS
(
SELECT
i.ProjectID AS ProjectID,
CASE WHEN ic.Custom_279 = 'Bug' THEN 'Issue' WHEN ic.Custom_279 IS NULL THEN 'Other' WHEN LTRIM(RTRIM(ic.Custom_279)) = '' THEN 'Other' ELSE ic.Custom_279 END AS WorkItemType,
i.IncidentNumber AS ID,
i.Name AS Name,
--CASE WHEN ic.Custom_264 < '1901-01-01' THEN NULL ELSE ic.Custom_264 END AS DateReported,
CASE WHEN i.CreatedDateTime < '1901-01-01' THEN NULL ELSE i.CreatedDateTime END AS DateReported,
CASE WHEN ic.Custom_265 < '1901-01-01' THEN NULL ELSE ic.Custom_265 END AS DateResolutionBegan,
CASE WHEN ic.Custom_266 < '1901-01-01' THEN NULL ELSE ic.Custom_266 END AS DateSignoffRequested,
CASE WHEN ic.Custom_267 < '1901-01-01' THEN NULL ELSE ic.Custom_267 END AS DateClosed
FROM
dbo.Incidents AS i
INNER JOIN dbo.IncidentCustomFields AS ic ON ic.IncidentID = i.IncidentID
WHERE
i.Archived = 0
),
ProjectDescendantsIncludingSelf AS
(
SELECT
p.ProjectID AS ProjectID,
p.ProjectID AS DescendantProjectID,
CAST('/' + p.Name AS NVARCHAR) AS ProjectPath
FROM
dbo.Projects AS p
UNION ALL
SELECT
pd.ProjectID AS ProjectID,
p.ProjectID AS DescendantProjectID,
CAST(pd.ProjectPath + N'/' + p.Name AS NVARCHAR) AS ProjectPath
FROM
ProjectDescendantsIncludingSelf AS pd
INNER JOIN dbo.Projects AS p ON p.ParentID = pd.DescendantProjectID
),
OpenTicketsLessThanDay AS
(SELECT
COUNT(ID) AS [LessThanDayTicketCount],
CASE WHEN DATEDIFF(DAY, DateReported, #endDate) < 1 THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [LessThanDay],
--CASE WHEN (DATEDIFF(DAY, DateReported, #endDate) > 1) AND (DATEDIFF(DAY, DateReported, #endDate) <= 2) THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [GreaterThan1Day],
--CASE WHEN (DATEDIFF(DAY, DateReported, #endDate) > 2) AND (DATEDIFF(DAY, DateReported, #endDate) <= 3) THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [GreaterThan2Days],
--CASE WHEN (DATEDIFF(DAY, DateReported, #endDate) > 3) AND (DATEDIFF(DAY, DateReported, #endDate) <= 4) THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [GreaterThan3Days],
--CASE WHEN (DATEDIFF(DAY, DateReported, #endDate) > 4) AND (DATEDIFF(DAY, DateReported, #endDate) <= 5) THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [GreaterThan4Days],
--CASE WHEN (DATEDIFF(DAY, DateReported, #endDate) > 5) AND (DATEDIFF(DAY, DateReported, #endDate) <= 6) THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [GreaterThan5Days],
--CASE WHEN (DATEDIFF(DAY, DateReported, #endDate) > 6) AND (DATEDIFF(DAY, DateReported, #endDate) <= 7) THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [GreaterThan6Days],
--CASE WHEN DATEDIFF(WEEK, DateReported, #endDate) > 1 THEN DATEDIFF(DAY, DateReported, #endDate) ELSE NULL END AS [GreaterThanWeek],
--DateReported,
--DateClosed,
--d.ProjectPath
FROM WorkItems wi
INNER JOIN ProjectDescendantsIncludingSelf d ON d.DescendantProjectID = wi.ProjectID
WHERE
DateReported < #endDate AND
(DateClosed IS NULL OR DateClosed > #endDate) AND
d.ProjectID = 182 AND
d.DescendantProjectID != 185
GROUP BY LessThanDay
)
SELECT [LessThanDayTicketCount] FROM OpenTicketsLessThanDay
GROUP BY LessThanDay
ORDER BY LessThanDay ASC
I presume you need something like one or the other of these.
DECLARE #EndDate datetime = getdate()
SELECT
COUNT(CASE WHEN modify_date > DATEADD(DAY,-1,#EndDate) THEN 1 END) AS [LessThanDay],
COUNT(CASE WHEN modify_date > DATEADD(DAY,-2,#EndDate) AND modify_date <= DATEADD(DAY,-1,#EndDate) THEN 1 END) AS [GreaterThan1Day],
COUNT(CASE WHEN modify_date > DATEADD(DAY,-3,#EndDate) AND modify_date <= DATEADD(DAY,-2,#EndDate) THEN 1 END) AS [GreaterThan2Days],
COUNT(CASE WHEN modify_date > DATEADD(DAY,-4,#EndDate) AND modify_date <= DATEADD(DAY,-3,#EndDate) THEN 1 END) AS [GreaterThan3Days],
COUNT(CASE WHEN modify_date > DATEADD(DAY,-5,#EndDate) AND modify_date <= DATEADD(DAY,-4,#EndDate) THEN 1 END) AS [GreaterThan4Days],
COUNT(CASE WHEN modify_date > DATEADD(DAY,-6,#EndDate) AND modify_date <= DATEADD(DAY,-5,#EndDate) THEN 1 END) AS [GreaterThan5Days],
COUNT(CASE WHEN modify_date > DATEADD(DAY,-7,#EndDate) AND modify_date <= DATEADD(DAY,-6,#EndDate) THEN 1 END) AS [GreaterThan6Days],
COUNT(CASE WHEN modify_date <= DATEADD(DAY,-7,#EndDate) THEN 1 END) AS [GreaterThanWeek]
FROM sys.objects
WHERE modify_date <= #EndDate
SELECT
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) = 0 THEN 1 END) AS [LessThanDay],
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) = 1 THEN 1 END) AS [GreaterThan1Day],
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) = 2 THEN 1 END) AS [GreaterThan2Days],
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) = 3 THEN 1 END) AS [GreaterThan3Days],
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) = 4 THEN 1 END) AS [GreaterThan4Days],
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) = 5 THEN 1 END) AS [GreaterThan5Days],
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) = 6 THEN 1 END) AS [GreaterThan6Days],
COUNT(CASE WHEN DATEDIFF(DAY, modify_date, #EndDate) > 6 THEN 1 END) AS [GreaterThanWeek]
FROM sys.objects
WHERE modify_date <= #EndDate