Procedimiento almacenado

14/07/2004 - 23:11 por anonymous | Informe spam
Cordial saludo.

Necesito una ayuda, quiero crear un procedimiento que me
ha vuelto el cerebro ñaco de pensar y aun no doy en el
clavo; necesito comparar una fecha y de acuerdo a eso se
hace una instrucción. Ej:

variable = fechainicio
while variable < fechaactual
dateadd(month,meses,variable)
end while

Esta es la idea, pero no se como implementarla en un
procedimiento almacenado, lo haria asi

select meses,fechainicio from tabla where condiciones

esto lo almacenaria en una tabla temporal pero no se como
implementar ese while; alguien podria darme una ayuda?

Agradezco la ayuda y sugerencias que me puedan brindar.

Preguntas similare

Leer las respuestas

#6 Javier Loria
15/07/2004 - 03:29 | Informe spam
Hola:
Una alternativa, asumiendo que la Tabla se llama CDAT y tiene una llave
primaria, y que tienes una Tabla de Numeros con un monton de numeros
consecutivos de 1 en adelante. Puedes hacer algo como:
==SELECT CDAT.PK
, CDAT.Fecha
, DATEADD(quarter, Numeros.Numero, CDAT.Fecha) AS FechaVencimiento
FROM CDAT
JOIN Numeros
ON DATEDIFF(quarter, CDAT.Fecha , GETDATE()) = Numeros.Numero
== De un solo golpe puedes trabajan con muchos trimestres de un golpe.
Estoy asumiendo que mides la diferencia en cuartos, pero podria ser que
sea mejor en meses por 3 como sugirio Ulises.
Saludos,

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.
anonymous escribio:
Agradezco las dos sugerencias pero: hay fechas que datan
del 2000 por eso mi logica seria en un While; les explico
mejor mi caso, resido en Colombia y hay algo llamado CDAT
que es un titulo valor que dependiendo de un numero de
meses gana intereses, ahora les voy a dar un ejemplo:
Se abrio un CDAT el dia 1 de enero del 2000 a 3 meses,
esa persona deberia retirar el CDAT el dia 1 de abril del
2000 pero aun la fecha es menor de la de hoy asi que se
suman otros 3 meses 1 de julio del 2000, y asi
sucesivamente hasta que esta fecha sea mayor que la
actual; por eso mi logica es hacerla en un while.

variable = fechainicio
while variable < fechaactual
dateadd(month,meses,variable)
end while

Espero que puedan darme sugerencias para poder realizar
este proceso.



Cordial saludo.

Necesito una ayuda, quiero crear un procedimiento que me
ha vuelto el cerebro ñaco de pensar y aun no doy en el
clavo; necesito comparar una fecha y de acuerdo a eso se
hace una instrucción. Ej:

variable = fechainicio
while variable < fechaactual
dateadd(month,meses,variable)
end while

Esta es la idea, pero no se como implementarla en un
procedimiento almacenado, lo haria asi

select meses,fechainicio from tabla where condiciones

esto lo almacenaria en una tabla temporal pero no se como
implementar ese while; alguien podria darme una ayuda?

Agradezco la ayuda y sugerencias que me puedan brindar.
.
Respuesta Responder a este mensaje
#7 anonymous
15/07/2004 - 17:24 | Informe spam
Ulises este es el procedimiento que he desarrollado pero
no me sale bien.

plazo es el numero de meses del CDAT
me hace bien el insert a la tabla temporal pero cuando
hace el dateadd en el ultimo select no toma bien el case
EJ. la fechacons 04/07/12 y el plazo es a 3 meses el
add seria 2004/10/12 pero en el resultado me arroja
2005/01/12 es como si no me tomara el case 1


create table #tmpcdat(producto smallint,ofic
smallint,cuenta char(8),cedula char(14),saldo money,meses
int,fechacons smalldatetime,plazo int)

insert #tmpcdat
select campo1,campo2,
meses=case
when dateadd(month,plazo,fechacons)>=getdate() then plazo
else
datediff(month,fechacons,getdate())
end,
fechacons,plazo
from tabla where condiciones

select
fechatermino=case
when dateadd(month,meses,fechacons)> getdate()
then dateadd(month,plazo,fechacons)
when dateadd(month,meses,fechacons) = getdate()
then dateadd(month,meses,fechacons)
else
dateadd(month,meses+plazo,fechacons)
end
from #tmpcdat where condiciones


Agradezo la ayuda que me pueda facilitar
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida