OK so preparing this data for SSC seems to have stimuated a few grey cells
I've fixed the output it - as follows
However - can it be further simplified?
;WITH SplitDates AS (
SELECT CAST(N.CallDateTime AS date) AS CallDate,
DATEDIFF(MILLISECOND, '1900-01-01',ISNULL(N.Duration,'00:00:00')) AS [DurationMs],
N.CallTypeId,
-- Rules - some not counted
CASE WHEN N.CallTypeID = 4 AND ISNULL(N.Duration,'00:00:00.000') = '00:00:00.000' THEN 0
WHEN N.CallTypeID = 5 AND ISNULL(N.Duration,'00:00:00.000') = '00:00:00.000' THEN 0
ELSE 1
END AS CallCount
FROM #TmpData AS N
), SumCallsPerTypePerDay AS (
SELECT SUM(CallCount) AS NumCalls,
CallDate,
CallTypeId
FROM SplitDates
GROUP BY CallDate, CallTypeId
), DurationByDay AS (
SELECT CallDate, SUM(DurationMs) AS [Total Duration]
FROM SplitDates
GROUP BY CallDate
), PivotNumbers AS (
SELECT CallDate, [1], [2], [3], [4], [5] , [Total Duration]
FROM ( SELECT CallTypeId, T.CallDate, NumCalls, D.[Total Duration]
FROM SumCallsPerTypePerDay AS T
JOIN DurationByDay AS D ON D.CallDate = T.CallDate
) AS SourceTable
PIVOT ( SUM(NumCalls)
FOR CallTypeId IN ([1], [2], [3], [4], [5]) ) AS PivotTable
)
SELECT *
FROM PivotNumbers
ORDER BY CallDate