¿Cómo puedo contar varios campos distintos sin repetir la consulta?

Tengo una consulta con varias agrupaciones que devuelve un recuento por mes. Algo como esto

SELECT field1, field2, year(someDate), month(someDate), count(*) as myCount
FROM myTable
WHERE field5 = 'test'
GROUP BY field1, field2, year(someDate), month(someDate)

El problema es que quiero que el recuento sea distinto por día, basado en un campo de identificación + el campo de fecha (sin la hora). Como en, quiero obtener el recuento distintivo de identificadores cada día, por mes. Entonces quiero algo como esto:

SELECT field1, field2, year(someDate), month(someDate), 
       count(distinct someID, someDate) as myCount
FROM myTable
WHERE field5 = 'test'
GROUP BY field1, field2, year(someDate), month(someDate)

Hay 2 problemas con esto:

No puede enumerar 2 campos distintos para un recuento agregado Esto también incluirá la hora de la fecha, por lo que no filtrará nada, ya que casi siempre tendrá una hora diferente

Me puedo encargar 2. fácilmente al convertir a un varchar solo la fecha, pero no estoy seguro de cómo lidiar con el problema de múltiples campos distintos. No puedo usaresta solució, ya que no quiero repetir la cláusula where completa y la cláusula group by. Esto es lo que se me ocurrió:

SELECT field1, field2, year(someDate), month(someDate), 
       count(distinct someID + CONVERT(VARCHAR, someDate, 112)) as myCount
FROM myTable
WHERE field5 = 'test'
GROUP BY field1, field2, year(someDate), month(someDate)

En lugar de enumerar los distintos campos en una lista delimitada por comas, simplemente los concatenaba. ¿Hay alguna desventaja en este método que deba tener en cuenta? ¿Puedo contar con que sea precisa? Y, ¿hay alguna forma mejor de lograr esto?

Básicamente, estoy agrupando por mes, pero el recuento "distinto" debe basarse en el día. Como en el caso, si tengo la identificación 31 el 3 de enero y el 5 de enero, quiero que cuente como 2 para enero, pero si tengo la identificación 31 dos veces el 3 de enero, solo quiero que cuente una vez.

Algunos datos de muestra básicos y salida esperada (omitiendo el campo1 y el campo2 para esto):

*Date*              *ID*
1/3/12 00:00:09     22
1/3/12 00:13:00     22
1/4/12 12:00:00     22
1/7/12 15:00:45     27
1/15/12 15:00:00    22
2/6/12 00:00:09     50
2/8/12 00:13:00     44
2/8/12 12:00:00     45
2/22/12 15:00:45    33
2/22/12 15:00:00    33
2/22/12 15:00:00    44

*Year*  *Month* *Count*
2012    Jan     4
2012    Feb     5

Respuestas a la pregunta(4)

Su respuesta a la pregunta