Pido disculpas, nada de nada

21/09/2007 - 17:41 por David | Informe spam
SQL Server 2000

Muy buenas, estoy KO, será porque es viernes, creo que es muy sencilla la
consulta pero nada de nada

Tabla1
-
id | fecha | concepto | haber

1 01/01/2007 GASTOS 2.000
2 01/01/2007 COMPRAS 3.000

Para un día determinada EXCLUSIVAMENTE el concepto aparece una única vez

Tabla2
-
id | fecha | concepto | debe

4 01/01/2007 GASTOS 100
5 01/01/2007 GASTOS 200

6 01/01/2007 COMPRAS 500
7 01/01/2007 COMPRAS 600
8 01/01/2007 COMPRAS 800

Para un día determinada el concepto puede repetirse o no aparecer

¿Cómo sería la consulta para devolver, por día y concepto la diferencia
entre el haber de Tabla1 y el debe de Tabla2?

Resultado
dia Concento Saldo
01/01/2007 GASTOS 1.700 = (2.000 - 100 - 200)
01/01/2007 COMPRAS 1.100 = (3.000 - 500 - 600 - 800)

Preguntas similare

Leer las respuestas

#1 jcac
21/09/2007 - 18:03 | Informe spam
Espero que esto te pueda ayudar. Pienso que deben de haber otras soluciones
pero esta me vino a la cabeza.

create table #tabla1 (campoid int, campofecha datetime, campoconcepto
varchar(100), campohaber decimal(10,3))
create table #tabla2 (campoid int, campofecha datetime, campoconcepto
varchar(100), campodebe decimal(10,3))
go
insert into #tabla1 values (1, '20070101', 'GASTOS', 2000)
insert into #tabla1 values (2, '20070101', 'COMPRAS', 3000)
go
insert into #tabla2 values (4, '20070101', 'GASTOS', 100)
insert into #tabla2 values (5, '20070101', 'GASTOS', 200)
insert into #tabla2 values (6, '20070101', 'COMPRAS', 500)
insert into #tabla2 values (7, '20070101', 'COMPRAS', 600)
insert into #tabla2 values (8, '20070101', 'COMPRAS', 800)
go
select a.campofecha, a.campoconcepto,
(select sum(campohaber) from #tabla1 where a.campofecha = campofecha and
a.campoconcepto = campoconcepto group by campofecha, campoconcepto) as
campohaber,
(select sum(campodebe) from #tabla2 where a.campofecha = campofecha and
a.campoconcepto = campoconcepto group by campofecha, campoconcepto) as
campodebe,
(select sum(campohaber) from #tabla1 where a.campofecha = campofecha and
a.campoconcepto = campoconcepto group by campofecha, campoconcepto) -
(select sum(campodebe) from #tabla2 where a.campofecha = campofecha and
a.campoconcepto = campoconcepto group by campofecha, campoconcepto) as
camposaldo
from #tabla1 a
go
drop table #tabla1
drop table #tabla2
go

Saludos

"David" escribió en el mensaje
news:%23LyERXG$
SQL Server 2000

Muy buenas, estoy KO, será porque es viernes, creo que es muy sencilla la
consulta pero nada de nada

Tabla1
-
id | fecha | concepto | haber

1 01/01/2007 GASTOS 2.000
2 01/01/2007 COMPRAS 3.000

Para un día determinada EXCLUSIVAMENTE el concepto aparece una única vez

Tabla2
-
id | fecha | concepto | debe

4 01/01/2007 GASTOS 100
5 01/01/2007 GASTOS 200

6 01/01/2007 COMPRAS 500
7 01/01/2007 COMPRAS 600
8 01/01/2007 COMPRAS 800

Para un día determinada el concepto puede repetirse o no aparecer

¿Cómo sería la consulta para devolver, por día y concepto la diferencia
entre el haber de Tabla1 y el debe de Tabla2?

Resultado
dia Concento Saldo
01/01/2007 GASTOS 1.700 = (2.000 - 100 - 200)
01/01/2007 COMPRAS 1.100 = (3.000 - 500 - 600 - 800)



Respuesta Responder a este mensaje
#2 Alejandro Mesa
21/09/2007 - 18:28 | Informe spam
Hola David,

Cuando se postea este tipo de pregunats, es recomendable que se postee la
estructura de las tablas, data de ejemplo en forma de sentencias "insert" y
resultado esperado, la ayuda debe ser mutua, no crees?

Gracias a jcac por postear la DDL y data de ejemplo.

select
coalesce(a.campofecha, b.campofecha) as campoconcepto,
coalesce(a.campoconcepto, b.campoconcepto) as campoconcepto,
max(a.campohaber) as campohaber,
sum(b.campodebe) as campodebe,
isnull(max(a.campohaber), 0) - isnull(sum(b.campodebe), 0) as camposaldo
from
#tabla1 as a
full outer join
#tabla2 as b
on a.campofecha = b.campofecha
and a.campoconcepto = b.campoconcepto
group by
coalesce(a.campofecha, b.campofecha),
coalesce(a.campoconcepto, b.campoconcepto)
order by
coalesce(a.campofecha, b.campofecha),
coalesce(a.campoconcepto, b.campoconcepto)
go


AMB


"David" wrote:

SQL Server 2000

Muy buenas, estoy KO, será porque es viernes, creo que es muy sencilla la
consulta pero nada de nada

Tabla1
-
id | fecha | concepto | haber

1 01/01/2007 GASTOS 2.000
2 01/01/2007 COMPRAS 3.000

Para un día determinada EXCLUSIVAMENTE el concepto aparece una única vez

Tabla2
-
id | fecha | concepto | debe

4 01/01/2007 GASTOS 100
5 01/01/2007 GASTOS 200

6 01/01/2007 COMPRAS 500
7 01/01/2007 COMPRAS 600
8 01/01/2007 COMPRAS 800

Para un día determinada el concepto puede repetirse o no aparecer

¿Cómo sería la consulta para devolver, por día y concepto la diferencia
entre el haber de Tabla1 y el debe de Tabla2?

Resultado
dia Concento Saldo
01/01/2007 GASTOS 1.700 = (2.000 - 100 - 200)
01/01/2007 COMPRAS 1.100 = (3.000 - 500 - 600 - 800)




Respuesta Responder a este mensaje
#3 David
21/09/2007 - 18:41 | Informe spam
Mil gracias a los dos, voy a ESTUDIAR las dos posibilidades propuestas.

Reitero las gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida