Ayuda Ayuda Please

10/09/2004 - 17:00 por Alma Alicia Gutierrez | Informe spam
Estimados Amigos!!!

Tengo rato de tratar de resolver este problema... y ya no puede mas y pido
ayuda..

Lo que quiero es:

Poder sacar un reporte que me de las facturas que emití en un periodo
especificico(fechaini and fechafin) y ademas me de cuales de esas facturas
fueron canceladas en ese mismo periodo.. ya sea mediante una nota de credito
o recibo.. Es decir obtener el saldo..

Lo que he hecho:

Primero hice una consulta de Union donde pongo:
SELECT ' ' AS documento, f.fact_id, F.fact_Fecha, 0 AS recibo, 0 AS
credito, 0 AS debito
FROM factura AS f
UNION ALL
SELECT 'REC- ' + CONVERT(VARCHAR(8), RF.Rec_Id, 112) AS DOCUMENTO,
RF.Fact_Id, R.Rec_Fecha, RF.Rec_cantidad AS RECIBO, 0 AS CREDITO,
0 AS DEBITO
FROM dbo.RECIBO R INNER JOIN
dbo.RECIBO_FACTURA RF ON R.Rec_Id = RF.Rec_Id
UNION ALL
SELECT 'CRE- ' + CONVERT(VARCHAR(8), CF.Cre_Id, 112) AS DOCUMENTO,
CF.Fact_Id, C.Cre_Fecha, 0 AS RECIBO, CF.Cre_Cantidad AS CREDITO,
0 AS DEBITO
FROM dbo.NOTA_CREDITO C INNER JOIN
dbo.[NCREDITO-FACTURA] CF ON C.Cre_Id = CF.Cre_Id
UNION ALL
SELECT 'DEB- ' + CONVERT(VARCHAR(8), DF.Deb_Id, 112) AS DOCUMENTO,
DF.FACT_ID, D .DEB_FECHA, 0 AS RECIBO, 0 AS CREDITO,
DF.DEB_CANTIDAD
FROM NOTA_DEBITO AS D, [NDEBITO-FACTURA] AS DF
WHERE D .DEB_ID = DF.DEB_ID

El problema es que como es una consulta de union, se repiten las facturas,
com puedo evitarlo...

Quizas estoy encolochandome.. y a hay otra forma facil de hacerlo...

de esta consulta yo pretendo sacar Los saldos a una fecha asi.. como lo
planteado anteriormente...


Saludos@

Alma Alicia
 

Leer las respuestas

#1 Maxi
10/09/2004 - 17:14 | Informe spam
Hola, si las tablas es un poco deficil pero vayamos igual ;-)

Una factura se cancela bajo un RECIBO, NOTA Debito o Credito

Ahora bien, si vos queres saber cuanto se cancelo, suponiendo que un recibo
no cancele el total de la factura deberias hacer algo asi como

SELECT FACTURA.ID,FACTURA.IMPORTE,RECIBOS.IMPORTE, FACTURA.IMPORTE -
RECIBOS.IMPORTE AS SALDO
FROM FACTURAS LEFT JOIN (SELECT FACTURAID,SUM(IMPORTE) AS IMPORTE FROM
RECIBOS
GROUP BY FACTURAID) RECIBOS ON
FACTURAS.ID = RECIBOS.FACTURAID
WHERE FACTURA.IMPORTE - RECIBOS.IMPORTE > 0


Es solo un modelo.

Si queres en el union que no repita valores, debes usar UNION y no UNION
ALL, en otras palabras sacale el ALL ;-)


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Alma Alicia Gutierrez" escribió en el mensaje
news:%
Estimados Amigos!!!

Tengo rato de tratar de resolver este problema... y ya no puede mas y pido
ayuda..

Lo que quiero es:

Poder sacar un reporte que me de las facturas que emití en un periodo
especificico(fechaini and fechafin) y ademas me de cuales de esas facturas
fueron canceladas en ese mismo periodo.. ya sea mediante una nota de


credito
o recibo.. Es decir obtener el saldo..

Lo que he hecho:

Primero hice una consulta de Union donde pongo:
SELECT ' ' AS documento, f.fact_id, F.fact_Fecha, 0 AS recibo, 0 AS
credito, 0 AS debito
FROM factura AS f
UNION ALL
SELECT 'REC- ' + CONVERT(VARCHAR(8), RF.Rec_Id, 112) AS DOCUMENTO,
RF.Fact_Id, R.Rec_Fecha, RF.Rec_cantidad AS RECIBO, 0 AS CREDITO,
0 AS DEBITO
FROM dbo.RECIBO R INNER JOIN
dbo.RECIBO_FACTURA RF ON R.Rec_Id = RF.Rec_Id
UNION ALL
SELECT 'CRE- ' + CONVERT(VARCHAR(8), CF.Cre_Id, 112) AS DOCUMENTO,
CF.Fact_Id, C.Cre_Fecha, 0 AS RECIBO, CF.Cre_Cantidad AS CREDITO,
0 AS DEBITO
FROM dbo.NOTA_CREDITO C INNER JOIN
dbo.[NCREDITO-FACTURA] CF ON C.Cre_Id = CF.Cre_Id
UNION ALL
SELECT 'DEB- ' + CONVERT(VARCHAR(8), DF.Deb_Id, 112) AS DOCUMENTO,
DF.FACT_ID, D .DEB_FECHA, 0 AS RECIBO, 0 AS CREDITO,
DF.DEB_CANTIDAD
FROM NOTA_DEBITO AS D, [NDEBITO-FACTURA] AS DF
WHERE D .DEB_ID = DF.DEB_ID

El problema es que como es una consulta de union, se repiten las facturas,
com puedo evitarlo...

Quizas estoy encolochandome.. y a hay otra forma facil de hacerlo...

de esta consulta yo pretendo sacar Los saldos a una fecha asi.. como lo
planteado anteriormente...


Saludos@

Alma Alicia







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.748 / Virus Database: 500 - Release Date: 01/09/2004

Preguntas similares