Cómo convertir el número de mes al nombre del mes en un campo fecha en SQL Server

Supongamos que tengo una tabla de ventas con datos de ventas por mes. Las ventas diarias se almacenan en la tabla con columnas como fecha, cantidad, precio, etc. Quiero obtener el total de ventas de cada mes. Ahora que tengo una columna con el tipo de datos de fecha, quiero convertir el número del mes en la fecha a Nombre del mes (como enero, febrero, marzo, etc.). Te mostraré cómo se hace esto en SQL Server.
Tabla SQL Server
CREATE TABLE [dbo].[Ventas](
[ID] [int] NOT NULL,
[Cantidad] [int] NULL,
[Precio] [numeric](18, 2) NULL,
[Fecha] [datetime] NULL,
)
La tabla tiene cuatro columnas con la columna Fecha con el tipo datetime. Puedes usar el tipo de Date también.
Insertamos algunos datos en la tabla.
INSERT INTO dbo.Ventas (ID, Cantidad, Precio, Fecha)
VALUES (1, 21, 11000, '2019-02-15'),
(2, 3, 2000, '2019-02-09'),
(3, 15, 21000, '2019-02-27'),
(4, 28, 51000, '2019-03-02'),
(5, 9, 6200, '2019-03-05')
Cada fila de la tabla ahora tiene las cantidades vendidas por día, junto con el precio y la fecha en que se venden los productos. La fecha tiene meses en números, sin embargo, deseo convertir el número del mes al nombre, como, 2 a febrero, 3 a marzo, etc.
Obtener el nombre del mes de número
Para convertir el mes de números a nombre del mes, escribiré esta consulta.
SELECT DATENAME (MONTH, DATEADD(MONTH, MONTH(Fecha) - 1, '1900-01-01')) Mes,
SUM(Cantidad) Cantidad _Vendida, SUM(Precio) PrecioTotal
FROM dbo.Ventas
GROUP BY MONTH(Fecha)
Resultado:
Mes
|
Cantidad_Vendida
|
PrecioTotal
|
Febrero
|
39
|
34000.00
|
Marzo
|
37
|
57200.00
|
En la consulta anterior, estoy usando la función incorporada DATENAME () para obtener la cadena de la parte de la fecha especificada (como MONTH) de una fecha específica.
Sintaxis DATENAME
DATENAME ( datepart, date )
Por ejemplo, para obtener el día, mes y año actuales, puedes usar la siguiente consulta usando la función DATENAME.
select DATENAME
(DAY, GETDATE()) Hoy,
DATENAME (MONTH, GETDATE()) Mes_Actual,
DATENAME (YEAR, GETDATE()) Year_Actual
Espero que este ejemplo te sea útil. Si tienes otra opción para hacer esto, puedes compartir la solución aquí en mi blog.
Gracias por leer.