Consulta sencilla en sql (creo)

08/06/2005 - 18:06 por SergioT | Informe spam
Hola

Tengo una tabla mas o menos asi TABLA(NroDoc, Item,CantIng,CantSal) que
tiene los intgresaso y salidas de almacen deseo obtener una consulta así:

select item,NroDoc,CantIng,CantSal
fom TABLA
Where Item='a'

Item NroDoc CantIng CantSal SALDO
a 123 10 0
10
a 125 100 0
110
a 54 0 60
50

Mi problema es que no se como calcular la columna SALDO en la consulta con
sql, por que no quiero tener que mediante programa recorrer el DS y llenar
esta columna ya que no me parece optimo y ademas estoy seguro que será mas
rapido el sqlServer que el codigo que sume y reste en el DS resultante


GRACIAS POR LA AYUDA
salu2
Sergio
 

Leer las respuestas

#1 Alejandro Mesa
08/06/2005 - 18:49 | Informe spam
Ve si esto te silve.

use northwind
go

create table t1 (
Item varchar(15) not null,
NroDoc int not null,
CantIng int not null,
CantSal int not null
)

insert into t1 values('a', 123, 10, 0)
insert into t1 values('a', 125, 100, 0)
insert into t1 values('a', 54, 0, 60)
go

select
item,
nrodoc,
canting,
cantsal,
case
when canting > 0 then (select sum(canting) from t1 as b where b.item =
a.item and b.nrodoc <= a.nrodoc)
else isnull((select sum(canting) from t1 as b where b.item = a.item), 0) -
(select sum(cantsal) from t1 as b where b.item = a.item and b.nrodoc <=
a.nrodoc)
end as saldo
from
t1 as a
order by
item,
case when canting > 0 then 0 else 1 end,
nrodoc
go

drop table t1
go

Me pregunto si esta tabla tendra una columna tipo datetime donde se guarda
la fecha y timepo de la transaccion?. Como ves, he tenido que forzar el orden
de procesamiento para poder obtener un resultado concistente cada vez que se
ejecute la sentencia con los mismos datos de prueba.


AMB



"SergioT" wrote:

Hola

Tengo una tabla mas o menos asi TABLA(NroDoc, Item,CantIng,CantSal) que
tiene los intgresaso y salidas de almacen deseo obtener una consulta así:

select item,NroDoc,CantIng,CantSal
fom TABLA
Where Item='a'

Item NroDoc CantIng CantSal SALDO
a 123 10 0
10
a 125 100 0
110
a 54 0 60
50

Mi problema es que no se como calcular la columna SALDO en la consulta con
sql, por que no quiero tener que mediante programa recorrer el DS y llenar
esta columna ya que no me parece optimo y ademas estoy seguro que será mas
rapido el sqlServer que el codigo que sume y reste en el DS resultante


GRACIAS POR LA AYUDA
salu2
Sergio



Preguntas similares