/ / Devolviendo sumas de los promedios diarios mensuales con el mes actual - servidor sql

Sumas devueltas de promedios diarios mensuales con el mes actual - servidor sql

Me pregunto si es posible construir una consulta T-SQL que devuelva el promedio mensual y el promedio diario de ventas, incluido el promedio adecuado del mes actual.

Lo más cerca que he llegado es esto:

SELECT CONVERT(CHAR(7), salesdate, 120) as [Month],
SUM(SalesPrice) as [Totals],
Max(DAY(EOMONTH(salesdate))),
SUM(SalesPrice)/Max(DAY(EOMONTH(salesdate)))
FROM Sales
WHERE salesdate >= "1/1/2014"
GROUP BY CONVERT(CHAR(7), salesdate, 120)
ORDER BY [Month]

Lo que devuelve todo bien - excepto por elel promedio diario del mes actual, ya que la fórmula I "que estoy usando para calcular el promedio diario (la suma de las ventas mensuales / el número de días en ese mes) está exagerando el número de días de ventas para el mes actual (a menos que" Corre el último día del mes).

Obviamente, esto se podría juntar como una consulta separada, pero ¿alguien tiene el mojo T-SQL necesario para sugerir cómo podría funcionar como una sola consulta?

Respuestas

1 para la respuesta № 1
SELECT CONVERT(CHAR(7), salesdate, 120) as [Month]
,SUM(SalesPrice) as [Totals]
,Max(DAY(CASE WHEN (MONTH(salesdate) = MONTH(GETDATE()))
AND (YEAR(salesdate) = YEAR(GETDATE()))
THEN GETDATE()
ELSE EOMONTH(salesdate) END))
,SUM(SalesPrice)/Max(DAY( CASE WHEN (MONTH(salesdate) = MONTH(GETDATE()))
AND (YEAR(salesdate) = YEAR(GETDATE()))
THEN GETDATE()
ELSE EOMONTH(salesdate) END))
FROM Sales
WHERE salesdate >= "20140101"  --<-- Use ANSI DATE format YYYYMMDD
GROUP BY CONVERT(CHAR(7), salesdate, 120)
ORDER BY [Month]