Reputation: 65
I need to create a report. In this query I have four columns being selected
I need to count how many rows exist where the date is different but the ID, GroupNumber, Type are the same. The date doesn't necessarily need to be displayed
Here is the code I have so far
Select DISTINCT CAST(MeasureDate AS Date) AS MeasureDate,
StudyNumber, GroupNumber, [Type]
From tUserEquipMeas
Group by StudyNumber, MeasureDate, GroupNumber, [type]
Upvotes: 0
Views: 1873
Reputation: 14341
It would be good to include some sample data and expected result based on that data. Because it is unclear for example if you want the count only for each combination of SudyNumber, GroupNumber, and Type or if you want the distinct count of days for each of combination and then the aggregate count of that. Also it is not clear if you want any details on the combination.
@scsimon has a good answer if you simply want the overall count of all unique combinations of StudyNumber, GroupNumber, Type, And Date.
If you simply want the count with the combination your query could be modified as follows:
Select COUNT( DISTINCT CAST(MeasureDate AS Date)) AS CountOfDistinctMeasureDates,
StudyNumber, GroupNumber, [Type]
From tUserEquipMeas
Group by StudyNumber, MeasureDate, GroupNumber, [type]
And if you want the details of each combination with the overall count all in the same query because you tagged a sql-server capable of using window functions here is one way:
SELECT
CAST(MeasureDate AS DATE)
,Studeynumber
,GroupNumber
,Type
,COUNT(*) as NumberOfTotalRecordsInGroup
,COUNT(*) OVER (PARTITION BY Studeynumber, GroupNumber, Type) AS NumberOfDistinctMeasureDatesForGroup
FROM
@Table
GROUP BY
CAST(MeasureDate AS DATE)
,Studeynumber
,GroupNumber
,Type
Here is some test data for you:
DECLARE @Table AS TABLE (MeasureDate DATETIME, Studeynumber INT, GroupNumber INT, Type CHAR(1))
INSERT INTO @Table (MeasureDate, Studeynumber, GroupNumber, Type)
VALUES
(GETDATE(), 123456, 1, 'A')
,(DATEADD(HOUR,-2,GETDATE()), 123456, 1, 'A')
,(DATEADD(HOUR,-4,GETDATE()), 123456, 1, 'A')
,(GETDATE() - 1, 123456, 1, 'A')
,(DATEADD(HOUR,-2,GETDATE() - 1), 123456, 1, 'A')
,(DATEADD(HOUR,-4,GETDATE() - 1), 123456, 1, 'A')
,(GETDATE() - 2, 123456, 1, 'A')
,(DATEADD(HOUR,-2,GETDATE() - 2), 123456, 1, 'A')
,(DATEADD(HOUR,-4,GETDATE() - 2), 123456, 1, 'A')
,(GETDATE(), 123456, 2, 'A')
,(DATEADD(HOUR,-2,GETDATE()), 123456, 2, 'A')
,(DATEADD(HOUR,-4,GETDATE()), 123456, 2, 'A')
,(GETDATE() - 1, 123456, 2, 'A')
,(DATEADD(HOUR,-2,GETDATE() - 1), 123456, 2, 'A')
,(DATEADD(HOUR,-4,GETDATE() - 1), 123456, 2, 'A')
,(GETDATE() - 2, 123456, 2, 'A')
,(DATEADD(MINUTE,-2,GETDATE() - 2), 123456, 2, 'A')
,(DATEADD(MINUTE,-3,GETDATE() - 2), 123456, 2, 'A')
,(DATEADD(MINUTE,-4,GETDATE() - 2), 123456, 2, 'A')
,(DATEADD(MINUTE,-5,GETDATE() - 2), 123456, 2, 'A')
,(DATEADD(MINUTE,-6,GETDATE() - 2), 123456, 2, 'A')
,(GETDATE() - 3, 123456, 2, 'A')
,(GETDATE(), 123456, 1, 'B')
,(DATEADD(HOUR,-2,GETDATE()), 123456, 1, 'B')
,(DATEADD(HOUR,-4,GETDATE()), 123456, 1, 'B')
,(GETDATE() - 1, 123456, 1, 'B')
,(DATEADD(HOUR,-2,GETDATE() - 1), 123456, 1, 'B')
,(DATEADD(HOUR,-4,GETDATE() - 1), 123456, 1, 'B')
,(GETDATE() - 2, 123456, 1, 'B')
,(DATEADD(HOUR,-2,GETDATE() - 2), 123456, 1, 'B')
,(DATEADD(HOUR,-4,GETDATE() - 2), 123456, 1, 'B')
,(GETDATE(), 789012, 1, 'A')
,(DATEADD(HOUR,-2,GETDATE()), 789012, 1, 'A')
,(DATEADD(HOUR,-4,GETDATE()), 789012, 1, 'A')
,(GETDATE() - 1, 789012, 1, 'A')
,(DATEADD(HOUR,-2,GETDATE() - 1), 789012, 1, 'A')
,(DATEADD(HOUR,-4,GETDATE() - 1), 789012, 1, 'A')
,(GETDATE() - 2, 123456, 1, 'A')
,(DATEADD(HOUR,-2,GETDATE() - 2), 789012, 1, 'A')
,(DATEADD(HOUR,-4,GETDATE() - 2), 789012, 1, 'A')
Upvotes: 0
Reputation: 25112
Sounds like you want the distinct / unique count.
select count(*) from (
select
count(distinct cast(MeasureDate as date)) as CT,
StudyNumber,
GroupNumber,
[Type]
from tUserEquipMeas
group by
StudyNumber,
GroupNumber,
[Type])
Upvotes: 1
Reputation: 13959
count of date?
Select count(MeasureDate) AS MeasureDateCount,
StudyNumber, GroupNumber, [Type]
From tUserEquipMeas
Group by StudyNumber, GroupNumber, [type]
Upvotes: 0