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

Preguntas similare

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



Respuesta Responder a este mensaje
#2 Alejandro Mesa
31/10/2006 - 23:42 | Informe spam
Correccion:

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



Adicionar la siguiente linea despues de calcular el ultimo dia del mes en
curso.

set @ed = dateadd(year, 1, @ed)


AMB

"Alejandro Mesa" wrote:

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
>
>
>
Respuesta Responder a este mensaje
#3 Mennegguzzi
01/11/2006 - 12:12 | Informe spam
Alejandro, ante todo gracias por tu respuesta

te cuento que yo había armado algo parecido, utilizando variables, pero como
esta query la uso para devolver los datos a una planilla de Excel, al
parecer en el microsoft query que utiliza el excel para editar las consultas
hay algún tema con las variables, porque no me daba el resultado, quedaba la
planilla en blanco.

si la ejecutaba en el Query Analizer funcionaba ok, pero en el Excel no, es
por eso que intenté hacer algo sin usar Variables, y ahí viene mi
complicación, funciona en el excel, pero con el inconveniente de mezclar el
mismo mes de dos años distintos

espero haber explicado bien mi problema

te mando un saludos y muchas gracias nuevamente

Pablo




"Alejandro Mesa" escribió en el
mensaje news:
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



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida