Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Mostrar registros que vencen en fin de semana

Estas en el tema de Mostrar registros que vencen en fin de semana en el foro de SQL Server en Foros del Web. Hola a todos/as Pensé en seguir con el hilo que creé en su día, pero al ser una cosa nueva, preferí abrir otro. Si he ...
  #1 (permalink)  
Antiguo 23/09/2014, 02:18
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Mostrar registros que vencen en fin de semana

Hola a todos/as

Pensé en seguir con el hilo que creé en su día, pero al ser una cosa nueva, preferí abrir otro. Si he hecho mal, me decís.

El tema es que tengo esta consulta que funciona correctamente:
Código SQL:
Ver original
  1. SELECT        OP.IdOp, PS.Codigo, dbo.View_JB_LIBG_operacion_clientes.Cliente, CL.Nombre + ' ' + CL.Apellidos AS Deudor, CL.IdCliente AS IDDeudor, OP.ImpOp AS Nominal,
  2.                          COALESCE (PR.ImporteRetencion, 0) + CASE WHEN PR.ComApertTipo = 'P' THEN 0 ELSE COALESCE (PR.ComApert, 0) END + COALESCE (PR.GFormalizacion, 0)
  3.                          + COALESCE (PR.IntPrep, 0) + COALESCE (PR.HonorariosIntermediario, 0) + CASE PR.AplicaTimbre WHEN 1 THEN COALESCE (PR.ImporteTimbre, 0)
  4.                          ELSE 0 END AS Ingresos, dbo.Fecha2Txt(OP.FechaAlta, 1, 1, '/') AS [Fecha Formalización], dbo.Fecha2Txt(OP.FchPrimerVto, 1, 1, '/') AS [Fecha Primer Vto]
  5. FROM            dbo.Posiciones AS PS INNER JOIN
  6.                          dbo.Propuestas AS PR ON PS.IDPosicion = PR.IDPosicion INNER JOIN
  7.                          dbo.Operaciones AS OP ON PR.IDPropuesta = OP.IDPropuesta INNER JOIN
  8.                          dbo.Clientes AS CL ON OP.IdCliente = CL.IdCliente LEFT OUTER JOIN
  9.                          dbo.View_JB_LIBG_operacion_clientes ON OP.IdOp = dbo.View_JB_LIBG_operacion_clientes.IDOp
  10. WHERE        (OP.Estado = 'ACT') AND (PS.IDCartera = 2) AND (OP.FechaAlta < dbo.FechaSistema()) AND (OP.FchPrimerVto >= dbo.FechaSistema()) OR
  11.                          (OP.Estado = 'ACT') AND (PS.IDCartera = 2) AND (OP.FechaAlta < dbo.FechaSistema()) AND (OP.FchPrimerVto < dbo.FechaSistema()) AND
  12.                          (dbo.ObtenerClaveDescr('TEF', PR.TipoEfecto) = 'Factura')
El problema es que necesito que en esa consulta, se contemplen dos nuevos casos:

- En la Fecha de Vencimiento ha de incluírse la condición de que D-1 sea laborable y las que vencen después de D-1 sin incluir.

- Fecha de Alta sea igual a D-1 laborable incluído.

Alguna idea de cómo enfocar lo de los días laborables??

Como siempre, muchas gracias.

Última edición por gnzsoloyo; 23/09/2014 a las 03:08
  #2 (permalink)  
Antiguo 23/09/2014, 07:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Mostrar registros que vencen en fin de semana

me ayudaria mas un ejemplo de "que" es lo que regresa ese query que el query en si......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 23/09/2014, 08:02
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Mostrar registros que vencen en fin de semana

Hola Libras!

Gracias por contestar.

La query saca aquellas operaciones que tienen estado activo, se han dado de alta en días anteriores a hoy, y la fecha de vencimiento es mayor o igual que hoy Y ADEMAS aquellas operaciones que aun habiendo vencido (fecha vencimiento < hoy) están en estado activo y son facturas.

El problema es que hay unas operaciones que tienen fecha de vencimiento el día 20 de Septiembre y al ejecutar la consulta el lunes no aparecen en los resultados porque al haber vencido, su estado se cambia a CLO (closed).

No se si me he explicado correctamente.

Si no es así, decidme y lo intentaré hacer mejor.
  #4 (permalink)  
Antiguo 23/09/2014, 08:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Mostrar registros que vencen en fin de semana

entiendo que quieres, pero no como ayudarte, si ejecutara tu codigo y viera que regresa y me dijeras mira falta este renglon que no aparece entonces te podria ayudar, ahora si pones algo como esto:

tengo estos datos

campo1 campo2 campo3

y quiero tener

campo1 campo2 campo3 campo4 donde fecha bla bla

se entenderia mejor.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 23/09/2014, 09:39
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Mostrar registros que vencen en fin de semana

Gracias Libras. Ahí va un ejemplo. Esta consulta saca:

IdOP Codigo Cliente Deudor IDDeudor Fecha Alta Fecha Venc ESTADO

1 COD1 C1 D2 8986 3/10/2013 25/09/2014 ACT

Sin embargo, hay registros, que por tener la fecha de vencimiento (Fecha Venc) en fin de semana, no aparecen cuando ejecuto la consulta el lunes porque cambian el estado a 'CLO'. Lo que yo querría sacar, sería todo lo que saco, y además aquellos registros cuya fecha venc. fuera en fin de semana.

Ejemplo:

IdOP Codigo Cliente Deudor IDDeudor Fecha Alta Fecha Venc ESTADO

2 COD2 C2 D3 1234 16/11/2013 20/09/2014 CLO

Me faltaría algo en el WHERE (supongo que en el where) que diga "si la fecha de vencimiento" es día festivo (o fin de semana) sácalo también independientemente del estado que tenga.

No se si ahora me he explicado mejor. Si no es así, me dices y trato de hacerlo mejor :)
  #6 (permalink)  
Antiguo 23/09/2014, 09:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Mostrar registros que vencen en fin de semana

y porque no agregas una nueva condicion

Código SQL:
Ver original
  1. OR
  2.                          (OP.Estado = 'ACT' OR op.estado ='CLO')
porque tambien los de status clo, porque dices que tu consulta trae todo lo que esta en estado Act y que ocupas que si se cambio a 'clo' en las fechas del reporte, entonces agarra 'Clo'.

si eso no te resulta puedes crear un calendario con los dias laborales, creas una tabla y pones todas las fechas laborales del año ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 23/09/2014, 09:56
 
Fecha de Ingreso: mayo-2007
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Mostrar registros que vencen en fin de semana

Gracias Libras por la respuesta.

Lo de Estado = 'ACT' OR Estado = 'CLO' no creo que fuera correcto porque sólo querría los 'CLO' si han vencido en fin de semana.

Lo de crearme un calendario, voy a estudiarlo. Creo que es la opción más lógica.

En cuanto lo tenga, te cuento.

Muchas gracias por tu ayuda Libras!

Etiquetas: funcion, registros, select, semana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:36.