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

Alguna sugerencia para esta consulta

Estas en el tema de Alguna sugerencia para esta consulta en el foro de SQL Server en Foros del Web. Hola, soy nuevo en este campo del sql tengo este problema en un desarrollo que tengo a mi cargo. yo tengo esta consulta. un cliente ...
  #1 (permalink)  
Antiguo 31/03/2011, 11:12
 
Fecha de Ingreso: marzo-2011
Ubicación: colombia
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Alguna sugerencia para esta consulta

Hola, soy nuevo en este campo del sql tengo este problema en un desarrollo que tengo a mi cargo.

yo tengo esta consulta. un cliente puede tener muchas facturas, unas canceladas otras con abonos y otras sin abono.

este es mi sp, cual es la dificulta que yo veo, es que como filtro por el id del cliente este me trae y me muestras todas las facturas que tienen abonos, las que no tienen abonos, y las canceladas, todo el historial del cliente en la facturacion y para mi usuario no seria funcional que tambien le muestre las facturas que ya estas canceladas.

que es lo que yo pretendo con el sp, que cada vez que yo consulte el cliente solo y únicamente que me muestre en una grid las facturas que tienen abonos y las que no tienen abonos, las canceladas que no las muestre.

alguna idea de como hacerlo, cualquier sugerencia sera super bien recibida.

Millones de Gracias.

ALTER PROCEDURE [dbo].[FACTCLIENT_GRID_S]
@intCodigo_CLIE varchar(20)
--@intTIDO int
AS

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here


SELECT DISTINCT tblFACTura.intCodigo_FACT,intNumero_FACT AS [NUM FACTURA],dtmFecha_FACT AS [FECHA FACTURA],dtmFechaRadicado_FACT AS FECHA_RADICA,
dtmFechaVenc_FACT AS [FECHA VENCIMIENTO],tblCLIEnte.strNombre_CLIE AS CLIENTE,tblABonoFActura.dcmSaldo_AB AS SALDO,
'FACTURAS CARTERA'=
CASE WHEN(SUM(tblDetalle.dcmBruto_DETA)=( SUM(tblABonoFActura.dcmValorAbono_AB))AND (tblABonoFActura.dcmSaldo_AB)=0) THEN 'FACTURA CANCELADA'
ELSE 'FACTURA PENDIENTE'END
FROM tblFACTura INNER JOIN tblDetalle ON
tblDetalle.intCodigo_FACT=tblFACTura.intCodigo_FAC T
INNER JOIN tblCLIEnte ON tblFACTura.intCodigo_CLIE=tblCLIEnte.intCodigo_CLI E FULL JOIN tblABonoFActura ON
tblFACTura.intCodigo_FACT=tblABonoFActura.intCodig o_FACT
WHERE /*tblABonoFActura.intCodigoAbono_AB IS NULL AND*/ tblFACTura.intCodigo_CLIE=@intCodigo_CLIE --AND tblABonoFActura.dcmValorAbono_AB<>0
GROUP BY tblFACTura.intCodigo_FACT,intNumero_FACT,dtmFecha_ FACT,dtmFechaRadicado_FACT,dtmFechaDocumento_AB,dt mFechaVenc_FACT,strNombre_CLIE,dcmSaldo_AB
ORDER BY intNumero_FACT
END
  #2 (permalink)  
Antiguo 31/03/2011, 12:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Alguna sugerencia para esta consulta

¿Porque abrir un nuevo tema, si ya tienes uno abierto?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 31/03/2011, 13:48
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Alguna sugerencia para esta consulta

¿Cómo sabes que una factura está cancelada?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 31/03/2011, 13:55
 
Fecha de Ingreso: marzo-2011
Ubicación: colombia
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Respuesta: Alguna sugerencia para esta consulta

Cita:
Iniciado por flaviovich Ver Mensaje
¿Cómo sabes que una factura está cancelada?
Muchas gracias, por intentar ayudarme.

yo se que las facturas estan canceladas cuando el saldo llega a cero y la suma de los abonos = a la suma de los detalle.

te muestro otra consulta que tengo para que la entiendas mejor cual es mi problemonn.



yo tengo esta consulta. un cliente puede tener muchas facturas, unas canceladas otras con abonos y otras sin abono.

este es mi sp, cual es la dificulta que yo veo es que como filtro por el id del cliente este me trae todas las que tienen abonos, las que no tienen abonos, y las canceladas.

que es lo que yo pretendo con el sp, que cada vez que yo consulte el cliente solo y únicamente que me muestre en una grid las facturas que tienen abonos y las que no tienen abonos, las canceladas que no las muestre.

hermano, alguna idea de como hacerlo, en el pos lo hacen??. parce estoy enbalado cualquier sugerencia sera super bien recibida.

Millones de Gracias.

ALTER PROCEDURE [dbo].[FACTCLIENT_GRID_S]
@intCodigo_CLIE varchar(20)
--@intTIDO int
AS

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here


SELECT DISTINCT tblFACTura.intCodigo_FACT,intNumero_FACT AS [NUM FACTURA],dtmFecha_FACT AS [FECHA FACTURA],dtmFechaRadicado_FACT AS FECHA_RADICA,
dtmFechaVenc_FACT AS [FECHA VENCIMIENTO],tblCLIEnte.strNombre_CLIE AS CLIENTE,tblABonoFActura.dcmSaldo_AB AS SALDO,
'FACTURAS CARTERA'=
CASE WHEN(SUM(tblDetalle.dcmBruto_DETA)=( SUM(tblABonoFActura.dcmValorAbono_AB))AND (tblABonoFActura.dcmSaldo_AB)=0) THEN 'FACTURA CANCELADA'
ELSE 'FACTURA PENDIENTE'END
FROM tblFACTura INNER JOIN tblDetalle ON
tblDetalle.intCodigo_FACT=tblFACTura.intCodigo_FAC T
INNER JOIN tblCLIEnte ON tblFACTura.intCodigo_CLIE=tblCLIEnte.intCodigo_CLI E FULL JOIN tblABonoFActura ON
tblFACTura.intCodigo_FACT=tblABonoFActura.intCodig o_FACT
WHERE tblFACTura.intCodigo_CLIE=@intCodigo_CLIE
GROUP BY tblFACTura.intCodigo_FACT,intNumero_FACT,dtmFecha_ FACT,dtmFechaRadicado_FACT,dtmFechaDocumento_AB,dt mFechaVenc_FACT,strNombre_CLIE,dcmSaldo_AB
ORDER BY intNumero_FACT
END
  #5 (permalink)  
Antiguo 31/03/2011, 14:03
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Alguna sugerencia para esta consulta

Prueba asi:
Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[FACTCLIENT_GRID_S]
  2. @intCodigo_CLIE VARCHAR(20)
  3. --@intTIDO int
  4. AS
  5. BEGIN
  6.  
  7. SET NOCOUNT ON
  8.  
  9. SELECT F.intCodigo_FACT, intNumero_FACT [NUM FACTURA], dtmFecha_FACT [FECHA FACTURA], dtmFechaRadicado_FACT FECHA_RADICA,
  10. dtmFechaVenc_FACT [FECHA VENCIMIENTO], C.strNombre_CLIE CLIENTE, AF.dcmSaldo_AB SALDO,
  11. FROM tblFACTura F
  12. INNER JOIN tblDetalle D ON F.intCodigo_FACT = D.intCodigo_FACT
  13. INNER JOIN tblCLIEnte C ON F.intCodigo_CLIE = C.intCodigo_CLIE
  14. FULL JOIN tblABonoFActura AF ON F.intCodigo_FACT = AF.intCodigo_FACT
  15. WHERE /*AF.intCodigoAbono_AB IS NULL
  16. AND*/ C.intCodigo_CLIE = @intCodigo_CLIE
  17. --AND AF.dcmValorAbono_AB<>0
  18. GROUP BY F.intCodigo_FACT, intNumero_FACT, dtmFecha_FACT, dtmFechaRadicado_FACT, dtmFechaVenc_FACT, strNombre_CLIE, dcmSaldo_AB
  19. HAVING SUM(D.dcmBruto_DETA) = SUM(AF.dcmValorAbono_AB) AND AF.dcmSaldo_AB = 0
  20. ORDER BY intNumero_FACT
  21.  
  22. END
Creo que AF.dcmSaldo_AB = 0 lo puedes poner en el where.
Si muestras un pantallazo de tus datos seria mucho mejor.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 31/03/2011, 14:14
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Alguna sugerencia para esta consulta

Este tema ya tenia su propio post, ¿porque no dar seguimiento al post original?
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 31/03/2011, 14:20
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Alguna sugerencia para esta consulta

En ese caso, sería bueno mostrar el enlace a ese post.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 01/04/2011, 10:46
 
Fecha de Ingreso: marzo-2011
Ubicación: colombia
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Respuesta: Alguna sugerencia para esta consulta

Cita:
Iniciado por flaviovich Ver Mensaje
Prueba asi:
Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[FACTCLIENT_GRID_S]
  2. @intCodigo_CLIE VARCHAR(20)
  3. --@intTIDO int
  4. AS
  5. BEGIN
  6.  
  7. SET NOCOUNT ON
  8.  
  9. SELECT F.intCodigo_FACT, intNumero_FACT [NUM FACTURA], dtmFecha_FACT [FECHA FACTURA], dtmFechaRadicado_FACT FECHA_RADICA,
  10. dtmFechaVenc_FACT [FECHA VENCIMIENTO], C.strNombre_CLIE CLIENTE, AF.dcmSaldo_AB SALDO,
  11. FROM tblFACTura F
  12. INNER JOIN tblDetalle D ON F.intCodigo_FACT = D.intCodigo_FACT
  13. INNER JOIN tblCLIEnte C ON F.intCodigo_CLIE = C.intCodigo_CLIE
  14. FULL JOIN tblABonoFActura AF ON F.intCodigo_FACT = AF.intCodigo_FACT
  15. WHERE /*AF.intCodigoAbono_AB IS NULL
  16. AND*/ C.intCodigo_CLIE = @intCodigo_CLIE
  17. --AND AF.dcmValorAbono_AB<>0
  18. GROUP BY F.intCodigo_FACT, intNumero_FACT, dtmFecha_FACT, dtmFechaRadicado_FACT, dtmFechaVenc_FACT, strNombre_CLIE, dcmSaldo_AB
  19. HAVING SUM(D.dcmBruto_DETA) = SUM(AF.dcmValorAbono_AB) AND AF.dcmSaldo_AB = 0
  20. ORDER BY intNumero_FACT
  21.  
  22. END
Creo que AF.dcmSaldo_AB = 0 lo puedes poner en el where.
Si muestras un pantallazo de tus datos seria mucho mejor.


Mil gracias por tu sugerencia, lastimosamente no me funciona de esta manera.

pero te quiero hacer una pregunta, tu tienes 4 tablas en sql.

tblCliente.
tblFactura
tblDetalleFactura
tblAbonoFactura

esta 4 tablas me sirven para desarrollar una interfaz en .NET algo que yo llamo CARTERA de CLIENTES.

un cliente llamado juan, tiene muchas facturas la FAC#1,FAC#2,FAC#3,FAC#4,FAC#5, asociadas verdad?, la FAC#1, esta cancelada en su totalidad, FAC#2, tiene un valor sumado de cada item en la tabla tblDetalleFactura de 300 y juan me ha realizado un abono de 100, lo que implica que en la tabla tblAbonoFactura tiene un campo llamado valorAbono=100 y un campo saldo=200,
en la FAC#3, juan tiene en la tabla tblDetalleFactura tiene un valor sumado por cada item de 250, y tiene 3 abonos valorAbono=50, valorabono=80,valorAbono=50, y en el campo saldo=70

en las FAC#4,FAC#5, juan no tiene abonos realizados lo cual en la tabla tblAbonoFactura no existen registros de las Facturas.

Que es lo que necesito exactamente, que la FAC#1, que se encuentra cancelada en su totalidad y cualquiera de ellas no se muestre en la consulta, es decir que al ejecutar la consulta solo me muestre las factura FAC#2,FAC#3,FAC#4,FAC#5, que son las Factura que tengo vivas en el sistemas de CARTERA para realizar su cobro respectivamente.

si me puedas colaborar.

mil y mil gracias

Etiquetas: sugerencia
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 06:20.