Descartar Cursores

22/09/2004 - 01:03 por luis suescun | Informe spam
Hola Grupo...

Atendiendo la sugerencia de descartar cursores, pero analizando mi
situacion, no le veo la salida.
recurro a sus excelentes conocimientos para ver si es posible con este caso

Tengo una tabla en la que tengo la facturacion de mis clientes campaña por
campaña
Ej:

Cedula Campaña Valor
xxxxxx 200401 51212
xxxxxx 200402 212121
xxxxxx 200404 474545
xxxxxx 200407 145551

En otra tabla maestra de campañas, yo tengo un consecutivo que me permite
conocer la diferencia numerica entre una campaña y otra
Ej:

Campaña Consecutivo
200401 58
200402 59
200403 60
200404 61
200405 62
200406 63
200407 64

esto me da la posibilidad de conocer el numero de campañas transcurridas
entre un pedido y otro de cada cliente

mi necesidad es:

un informe que me diga el numero de campañas en que estuvo activa una
cliente, teniendo en cuenta que se pone inactiva cuando deja de poner pedido
durante 2 campañas. y si vuelve a poner pedido despues de 2 campañas de
inactividad, vuelve a ser activa.

Muchas Gracias a todos.

Preguntas similare

Leer las respuestas

#1 MAXI
22/09/2004 - 01:32 | Informe spam
Hola, a ver, y en tu ejemplo segun vos, cuantas campañas estuvo activo el
cliente? porque hay algo que no me cierra del todo bien




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"luis suescun" escribió en el mensaje
news:
Hola Grupo...

Atendiendo la sugerencia de descartar cursores, pero analizando mi
situacion, no le veo la salida.
recurro a sus excelentes conocimientos para ver si es posible con este
caso

Tengo una tabla en la que tengo la facturacion de mis clientes campaña por
campaña
Ej:

Cedula Campaña Valor
xxxxxx 200401 51212
xxxxxx 200402 212121
xxxxxx 200404 474545
xxxxxx 200407 145551

En otra tabla maestra de campañas, yo tengo un consecutivo que me permite
conocer la diferencia numerica entre una campaña y otra
Ej:

Campaña Consecutivo
200401 58
200402 59
200403 60
200404 61
200405 62
200406 63
200407 64

esto me da la posibilidad de conocer el numero de campañas transcurridas
entre un pedido y otro de cada cliente

mi necesidad es:

un informe que me diga el numero de campañas en que estuvo activa una
cliente, teniendo en cuenta que se pone inactiva cuando deja de poner
pedido
durante 2 campañas. y si vuelve a poner pedido despues de 2 campañas de
inactividad, vuelve a ser activa.

Muchas Gracias a todos.






Respuesta Responder a este mensaje
#2 Javier Loria
22/09/2004 - 04:07 | Informe spam
Hola Luis:
La siguiente consulta debe dar las campanas en que una cliente esta
"activa"
SELECT DISTINCT Facturacion.Cedula, A.Campana
FROM Campanas AS A
JOIN Campanas AS B
ON A.Consecutivo=B.Consecutivo-1
JOIN Facturacion
ON Facturacion.Campana=A.Campana
OR Facturacion.Campana=B.Campana
La cantidad de campanas activas debe ser:
SELECT Cedula, COUNT(*)
FROM (SELECT DISTINCT Facturacion.Cedula, A.Campana
FROM Campanas AS A
JOIN Campanas AS B
ON A.Consecutivo=B.Consecutivo-1
JOIN Facturacion
ON Facturacion.Campana=A.Campana
OR Facturacion.Campana=B.Campana) AS Camp
GROUP BY Cedula
Trate de hacerlo mas simple, pero a esta hora ya no me da la cabeza.
Espero que no tenga problemas de sintaxis.
Suerte,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"luis suescun" wrote in message
news:
Hola Grupo...

Atendiendo la sugerencia de descartar cursores, pero analizando mi
situacion, no le veo la salida.
recurro a sus excelentes conocimientos para ver si es posible con este


caso

Tengo una tabla en la que tengo la facturacion de mis clientes campaña por
campaña
Ej:

Cedula Campaña Valor
xxxxxx 200401 51212
xxxxxx 200402 212121
xxxxxx 200404 474545
xxxxxx 200407 145551

En otra tabla maestra de campañas, yo tengo un consecutivo que me permite
conocer la diferencia numerica entre una campaña y otra
Ej:

Campaña Consecutivo
200401 58
200402 59
200403 60
200404 61
200405 62
200406 63
200407 64

esto me da la posibilidad de conocer el numero de campañas transcurridas
entre un pedido y otro de cada cliente

mi necesidad es:

un informe que me diga el numero de campañas en que estuvo activa una
cliente, teniendo en cuenta que se pone inactiva cuando deja de poner


pedido
durante 2 campañas. y si vuelve a poner pedido despues de 2 campañas de
inactividad, vuelve a ser activa.

Muchas Gracias a todos.






Respuesta Responder a este mensaje
#3 luis suescun
22/09/2004 - 14:49 | Informe spam
Si Max...
miralo asi...
segun el ejemplo

Cedula Campaña Valor
xxxxxx 200401 51212
xxxxxx 200402 212121
xxxxxx 200404 474545
200405 Nada
200406 Nada Aca pasa a estar inactiva(dos campañas
consecutivas)
xxxxxx 200407 145551 En esta campaña vuelve a estar activa

lo que qiere decir que en un rango de 6 campañas, estuvo inactiva en una
campaña, pues una campaña despues de haber puesto un pedido, sino no pone en
la siguiente, aun es activa.

Gracias.


"MAXI" wrote in message
news:
Hola, a ver, y en tu ejemplo segun vos, cuantas campañas estuvo activo el
cliente? porque hay algo que no me cierra del todo bien




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"luis suescun" escribió en el mensaje
news:
> Hola Grupo...
>
> Atendiendo la sugerencia de descartar cursores, pero analizando mi
> situacion, no le veo la salida.
> recurro a sus excelentes conocimientos para ver si es posible con este
> caso
>
> Tengo una tabla en la que tengo la facturacion de mis clientes campaña


por
> campaña
> Ej:
>
> Cedula Campaña Valor
> xxxxxx 200401 51212
> xxxxxx 200402 212121
> xxxxxx 200404 474545
> xxxxxx 200407 145551
>
> En otra tabla maestra de campañas, yo tengo un consecutivo que me


permite
> conocer la diferencia numerica entre una campaña y otra
> Ej:
>
> Campaña Consecutivo
> 200401 58
> 200402 59
> 200403 60
> 200404 61
> 200405 62
> 200406 63
> 200407 64
>
> esto me da la posibilidad de conocer el numero de campañas transcurridas
> entre un pedido y otro de cada cliente
>
> mi necesidad es:
>
> un informe que me diga el numero de campañas en que estuvo activa una
> cliente, teniendo en cuenta que se pone inactiva cuando deja de poner
> pedido
> durante 2 campañas. y si vuelve a poner pedido despues de 2 campañas de
> inactividad, vuelve a ser activa.
>
> Muchas Gracias a todos.
>
>
>
>
>
>


Respuesta Responder a este mensaje
#4 luis suescun
22/09/2004 - 14:51 | Informe spam
Vos tranquilo, que segun la situacion, es mas que suficiente lo que hiciste.

Mil gracias hermano.


"Javier Loria" wrote in message
news:u$
Hola Luis:
La siguiente consulta debe dar las campanas en que una cliente esta
"activa"
> SELECT DISTINCT Facturacion.Cedula, A.Campana
FROM Campanas AS A
JOIN Campanas AS B
ON A.Consecutivo=B.Consecutivo-1
JOIN Facturacion
ON Facturacion.Campana=A.Campana
OR Facturacion.Campana=B.Campana
> La cantidad de campanas activas debe ser:
> SELECT Cedula, COUNT(*)
FROM (SELECT DISTINCT Facturacion.Cedula, A.Campana
FROM Campanas AS A
JOIN Campanas AS B
ON A.Consecutivo=B.Consecutivo-1
JOIN Facturacion
ON Facturacion.Campana=A.Campana
OR Facturacion.Campana=B.Campana) AS Camp
GROUP BY Cedula
> Trate de hacerlo mas simple, pero a esta hora ya no me da la cabeza.
Espero que no tenga problemas de sintaxis.
Suerte,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"luis suescun" wrote in message
news:
> Hola Grupo...
>
> Atendiendo la sugerencia de descartar cursores, pero analizando mi
> situacion, no le veo la salida.
> recurro a sus excelentes conocimientos para ver si es posible con este
caso
>
> Tengo una tabla en la que tengo la facturacion de mis clientes campaña


por
> campaña
> Ej:
>
> Cedula Campaña Valor
> xxxxxx 200401 51212
> xxxxxx 200402 212121
> xxxxxx 200404 474545
> xxxxxx 200407 145551
>
> En otra tabla maestra de campañas, yo tengo un consecutivo que me


permite
> conocer la diferencia numerica entre una campaña y otra
> Ej:
>
> Campaña Consecutivo
> 200401 58
> 200402 59
> 200403 60
> 200404 61
> 200405 62
> 200406 63
> 200407 64
>
> esto me da la posibilidad de conocer el numero de campañas transcurridas
> entre un pedido y otro de cada cliente
>
> mi necesidad es:
>
> un informe que me diga el numero de campañas en que estuvo activa una
> cliente, teniendo en cuenta que se pone inactiva cuando deja de poner
pedido
> durante 2 campañas. y si vuelve a poner pedido despues de 2 campañas de
> inactividad, vuelve a ser activa.
>
> Muchas Gracias a todos.
>
>
>
>
>
>


Respuesta Responder a este mensaje
#5 luis suescun
22/09/2004 - 15:21 | Informe spam
Hola Javier...

El query que me pasaste esta ok...

lo unico que no veo, es como contemplar cuando la cliente este inactiva, que
sucede cuando esta deja de poner pedido en 2 campañas consecutivas y puede
volverse a activar cuando vuelve y pone pedido.

Te Cambio el ejemplo con las tablas.

Cedula Campaña Valor
xxxxxx 200401 51212
xxxxxx 200402 212121
xxxxxx 200404 474545
- 200405 -- aca no puso sigue activa
- 200406 -- aca no puso se pone inactiva
xxxxxx 200407 145551 aca vuele a estar activa

lo que quiere decir que en un rango de 7 campañas, estuvo inactiva 1 campaña
y activa durante 5.


No te apresures, no es tan urgente, solo estoy contemplando la posibilidad
de
Luis

"Javier Loria" wrote in message
news:u$
Hola Luis:
La siguiente consulta debe dar las campanas en que una cliente esta
"activa"
> SELECT DISTINCT Facturacion.Cedula, A.Campana
FROM Campanas AS A
JOIN Campanas AS B
ON A.Consecutivo=B.Consecutivo-1
JOIN Facturacion
ON Facturacion.Campana=A.Campana
OR Facturacion.Campana=B.Campana
> La cantidad de campanas activas debe ser:
> SELECT Cedula, COUNT(*)
FROM (SELECT DISTINCT Facturacion.Cedula, A.Campana
FROM Campanas AS A
JOIN Campanas AS B
ON A.Consecutivo=B.Consecutivo-1
JOIN Facturacion
ON Facturacion.Campana=A.Campana
OR Facturacion.Campana=B.Campana) AS Camp
GROUP BY Cedula
> Trate de hacerlo mas simple, pero a esta hora ya no me da la cabeza.
Espero que no tenga problemas de sintaxis.
Suerte,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"luis suescun" wrote in message
news:
> Hola Grupo...
>
> Atendiendo la sugerencia de descartar cursores, pero analizando mi
> situacion, no le veo la salida.
> recurro a sus excelentes conocimientos para ver si es posible con este
caso
>
> Tengo una tabla en la que tengo la facturacion de mis clientes campaña


por
> campaña
> Ej:
>
> Cedula Campaña Valor
> xxxxxx 200401 51212
> xxxxxx 200402 212121
> xxxxxx 200404 474545
> xxxxxx 200407 145551
>
> En otra tabla maestra de campañas, yo tengo un consecutivo que me


permite
> conocer la diferencia numerica entre una campaña y otra
> Ej:
>
> Campaña Consecutivo
> 200401 58
> 200402 59
> 200403 60
> 200404 61
> 200405 62
> 200406 63
> 200407 64
>
> esto me da la posibilidad de conocer el numero de campañas transcurridas
> entre un pedido y otro de cada cliente
>
> mi necesidad es:
>
> un informe que me diga el numero de campañas en que estuvo activa una
> cliente, teniendo en cuenta que se pone inactiva cuando deja de poner
pedido
> durante 2 campañas. y si vuelve a poner pedido despues de 2 campañas de
> inactividad, vuelve a ser activa.
>
> Muchas Gracias a todos.
>
>
>
>
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida