Comparación MES - AÑO

31/10/2006 - 17:57 por Mennegguzzi | Informe spam
Hola a todos, una consulta, existe alguna manera de comparar dos fechas pero
solo tomando Mes y Año ?

por ejemplo:
Set @Fecha_01 = '20060815'
Set @Fecha_02 = '20050823'
entonces:
Month(@Fecha_01) = Month(@Fecha_02)

yo necesitaría poder comparar tanto el mes como el año como para que:

Month, Year(@Fecha_01) > Month Year(@Fecha_02)
obviamente así como yo lo escribo no se puede, pero quizás exista alguna
manera de hacerlo

lo quiero usar para una consulta en la que necesito mostrar las cantidades
pedidas de cada producto, abierto por mes, desde el mes en curso hasta un
año para adelante.
Cada producto será un registro y cada mes un campo

empecé a hacerlo de la siguiente manera, pero me encuentro que cuando el
pedido era para el , por ej.: 22-08-2006, me lo muestra en el campo junto
con los de Agosto de 2007

SELECT PRODUCTO,
(SELECT SUM(CANTID)
FROM PEDIDOS
WHERE PROD = PRODUCTO AND MONTH(FECHA_ENT) = MONTH(GETDATE())),
(SELECT SUM(CANTID)
FROM PEDIDOS
WHERE PROD = PRODUCTO AND MONTH(FECHA_ENT) = MONTH(GETDATE() + 30)),
(SELECT SUM(CANTID)
FROM PEDIDOS
WHERE PROD = PRODUCTO AND MONTH(FECHA_ENT) = MONTH(GETDATE() + 60)),
.
.
.
FROM TABLA_PRODUCTOS
ORDER BY PRODUCTO


Puede pasar que queden pedidos con fecha menor que el día en curso, y esos
debería mostrarlos junto con los de el mes en curso.

Sé que quizás es algo complejo pero agradecería muchísimo a quien me pudiera
orientar


Saludos y muchas gracias de antemano

Pablo
 

Leer las respuestas

#1 Alejandro Mesa
31/10/2006 - 22:37 | Informe spam
Trata:

declare @sd datetime
declare @ed datetime

set @sd = convert(char(6), getdate(), 112) + '01'

set @ed = dateadd(day, -1, dateadd(month, 1, @sd) )

select
producto,
year(fecha_ent) as y,
month(fecha_ent) as m,
sum(cantid) as sum_cantid
from dbo.pedidos
where fecha_ent >= @sd and fecha_ent <= @ed
group by
year(fecha_ent),
month(fecha_ent)
go

Ahora puedes hacer un pivot de ese resultado, pero como el anio y mes son
variables, pues tendras que hacer el pivot de forma dinamica.


AMB

"Mennegguzzi" wrote:

Hola a todos, una consulta, existe alguna manera de comparar dos fechas pero
solo tomando Mes y Año ?

por ejemplo:
Set @Fecha_01 = '20060815'
Set @Fecha_02 = '20050823'
entonces:
Month(@Fecha_01) = Month(@Fecha_02)

yo necesitaría poder comparar tanto el mes como el año como para que:

Month, Year(@Fecha_01) > Month Year(@Fecha_02)
obviamente así como yo lo escribo no se puede, pero quizás exista alguna
manera de hacerlo

lo quiero usar para una consulta en la que necesito mostrar las cantidades
pedidas de cada producto, abierto por mes, desde el mes en curso hasta un
año para adelante.
Cada producto será un registro y cada mes un campo

empecé a hacerlo de la siguiente manera, pero me encuentro que cuando el
pedido era para el , por ej.: 22-08-2006, me lo muestra en el campo junto
con los de Agosto de 2007

SELECT PRODUCTO,
(SELECT SUM(CANTID)
FROM PEDIDOS
WHERE PROD = PRODUCTO AND MONTH(FECHA_ENT) = MONTH(GETDATE())),
(SELECT SUM(CANTID)
FROM PEDIDOS
WHERE PROD = PRODUCTO AND MONTH(FECHA_ENT) = MONTH(GETDATE() + 30)),
(SELECT SUM(CANTID)
FROM PEDIDOS
WHERE PROD = PRODUCTO AND MONTH(FECHA_ENT) = MONTH(GETDATE() + 60)),
.
.
.
FROM TABLA_PRODUCTOS
ORDER BY PRODUCTO


Puede pasar que queden pedidos con fecha menor que el día en curso, y esos
debería mostrarlos junto con los de el mes en curso.

Sé que quizás es algo complejo pero agradecería muchísimo a quien me pudiera
orientar


Saludos y muchas gracias de antemano

Pablo



Preguntas similares