¿Cómo comparo rangos de fechas en una consulta de SQL Server?

¿Cómo comparo rangos de fechas en una consulta de SQL Server?

Digamos que tengo datos en una tabla como esta:

| DateTimePurchased    | Amount |
|----------------------|--------|
| 1/1/2017  3:23:15 PM | 657    |
| 1/1/2017  3:38:29 PM | 730    |

Y quiero ejecutar una consulta que resulte así:

| Day   | 2017_Total | 2018_Total |
|-------|------------|------------|
| Jan 1 | 4354653    | 7686787    |
| Jan 2 | 3453634    | 6546456    |

etc...

¿Cómo escribiría la consulta para SQL Server?

Mostrar la mejor respuesta

Yo expresaría esto como:

select month(DateTimePurchased) as mm, day(DateTimePurchased) as dd,
       sum(case when year(DateTimePurchased) = 2017 then amount end) as total_2017,
       sum(case when year(DateTimePurchased) = 2018 then amount end) as total_2018
from t
group by month(DateTimePurchased), day(DateTimePurchased)
order by mm, dd;

Esto divide la "fecha" en dos columnas, una para el mes y otra para el día. De hecho, esto hace que sea más fácil trabajar con los resultados porque ordena los resultados más fácilmente.

Gracias @gordon-linoff! Tengo problemas para adaptar esto para hacer una comparación mes a mes. Por ejemplo, si quisiera comparar febrero y marzo de 2017. Obviamente no tienen la misma cantidad de días, pero me gustaría comparar el 1 de febrero con el 1 de marzo, el 2 de febrero con el 2 de marzo, etc. ¿Me pueden ayudar? ?

@Infin8Loop. . . Esa es una pregunta diferente, así que hazla como una pregunta diferente. Asegúrese de incluir los resultados que desea ver.

La respuesta de Gordon Linoff es correcta.

La siguiente consulta le brinda exactamente lo que solicitó.

SELECT (LEFT(DATENAME(MONTH, GETDATE()),3)) + ' ' + CAST((DAY(DATE_ADDED)) AS NVARCHAR(10)) AS [Day], SUM(CASE WHEN YEAR(DATE_ADDED) = 2017 THEN AMOUNT END) AS [2017_Total], SUM(CASE WHEN YEAR(DATE_ADDED) = 2018 THEN AMOUNT END) AS [2018_Total] FROM TBLDATE GROUP BY MONTH(DATE_ADDED), DAY(DATE_ADDED) ORDER BY [Day]

¿Qué tal mes tras mes? Entonces, las filas serían números de día (1, 2, 3, 4) y las columnas podrían ser (febrero de 2017, marzo de 2017), etc. Tengo problemas para armar esto.

@Infin8Loop Esa es una consulta totalmente diferente y una pregunta diferente. Puedes publicarlo como una nueva pregunta.