filtar registros

07/06/2005 - 01:37 por swricardo | Informe spam
Hola a todos, tengo un problema con una consulta para realizar un reporte
en cristal rep. que no se como sulucionar.

Tengo una tabla con 150000 numeros de facturas, algunas tienen una
condicion de deshabilitadas y de los demas registros quisiera obtener el
maximo y minimo cada vez que se corta la numeracion, para no listar todos
los registos.

por ej.
001
002
003
005
007
008
009
y que quede
min / max
001-003
005-005
007-009

gracias de antemano, Ricardo

Preguntas similare

Leer las respuestas

#1 Maxi
07/06/2005 - 04:08 | Informe spam
Hola y como sacas esos rangos? o sea que determina que se cortan asi?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Ricardo" escribió en el mensaje
news:%
Hola a todos, tengo un problema con una consulta para realizar un reporte
en cristal rep. que no se como sulucionar.

Tengo una tabla con 150000 numeros de facturas, algunas tienen una
condicion de deshabilitadas y de los demas registros quisiera obtener el
maximo y minimo cada vez que se corta la numeracion, para no listar todos
los registos.

por ej.
001
002
003
005
007
008
009
y que quede
min / max
001-003
005-005
007-009

gracias de antemano, Ricardo

Respuesta Responder a este mensaje
#2 Alejandro Mesa
07/06/2005 - 14:33 | Informe spam
Trata,

use northwind
go

create table t1 (
c1 int not null unique
)
go

insert into t1 values(1)
insert into t1 values(2)
insert into t1 values(3)
insert into t1 values(5)
insert into t1 values(7)
insert into t1 values(8)
insert into t1 values(9)

insert into t1 values(12)

insert into t1 values(15)
insert into t1 values(16)
insert into t1 values(17)

insert into t1 values(20)
go

create view v1
as
select
a.c1,
isnull(
(
select
max(b.c1)
from
t1 as b
where
b.c1 >= a.c1
and not exists(
select
*
from
t1 as c
where
c.c1 between a.c1 and b.c1
and (c.c1 - (select max(d.c1) from t1 as d where d.c1 >= a.c1 and d.c1 <
c.c1)) > 1
)
), a.c1) as c2
from
t1 as a
go

select
min(c1) as c1,
c2
from
v1
group by
c2
order by
c2
go

drop view v1
go

drop table t1
go


AMB


"Ricardo" wrote:

Hola a todos, tengo un problema con una consulta para realizar un reporte
en cristal rep. que no se como sulucionar.

Tengo una tabla con 150000 numeros de facturas, algunas tienen una
condicion de deshabilitadas y de los demas registros quisiera obtener el
maximo y minimo cada vez que se corta la numeracion, para no listar todos
los registos.

por ej.
001
002
003
005
007
008
009
y que quede
min / max
001-003
005-005
007-009

gracias de antemano, Ricardo


Respuesta Responder a este mensaje
#3 swricardo
08/06/2005 - 01:06 | Informe spam
Hola Alejando, gracias por tu respuesta, como puedo adaptar tu consulta
poruqe los numeros que no incluyo son los que cumplen una condicion de
deshabilitados?

Lo que necesito es obtener el minimo y maximo de los registros que quedan
entre los numeros deshabilitados.

gracias de nuevo, Ricardo


Alejandro Mesa wrote:

Trata,

use northwind
go

create table t1 (
c1 int not null unique
)
go

insert into t1 values(1)
insert into t1 values(2)
insert into t1 values(3)
insert into t1 values(5)
insert into t1 values(7)
insert into t1 values(8)
insert into t1 values(9)

insert into t1 values(12)

insert into t1 values(15)
insert into t1 values(16)
insert into t1 values(17)

insert into t1 values(20)
go

create view v1
as
select
a.c1,
isnull(
(
select
max(b.c1)
from
t1 as b
where
b.c1 >= a.c1
and not exists(
select
*
from
t1 as c
where
c.c1 between a.c1 and b.c1
and (c.c1 - (select max(d.c1) from t1 as d where d.c1 >= a.c1 and d.c1 <
c.c1)) > 1
)
), a.c1) as c2
from
t1 as a
go

select
min(c1) as c1,
c2
from
v1
group by
c2
order by
c2
go

drop view v1
go

drop table t1
go


AMB


"Ricardo" wrote:

> Hola a todos, tengo un problema con una consulta para realizar un reporte
> en cristal rep. que no se como sulucionar.
>
> Tengo una tabla con 150000 numeros de facturas, algunas tienen una
> condicion de deshabilitadas y de los demas registros quisiera obtener el
> maximo y minimo cada vez que se corta la numeracion, para no listar todos
> los registos.
>
> por ej.
> 001
> 002
> 003
> 005
> 007
> 008
> 009
> y que quede
> min / max
> 001-003
> 005-005
> 007-009
>
> gracias de antemano, Ricardo
>
>
Respuesta Responder a este mensaje
#4 Alejandro Mesa
08/06/2005 - 14:01 | Informe spam
Ve si esta versión te sirve de algo:

use northwind
go

create table t1 (
c1 int not null unique,
habilitado char(1) not null default('1') check(habilitado in ('0', '1'))
)
go

insert into t1(c1) values(1)
insert into t1(c1) values(2)
insert into t1(c1) values(3)
insert into t1(c1) values(5)
insert into t1(c1) values(7)
insert into t1(c1) values(8)
insert into t1(c1) values(9)
insert into t1(c1, habilitado) values(10, '0')
insert into t1(c1, habilitado) values(11, '0')
insert into t1(c1) values(12)
insert into t1(c1, habilitado) values(13, '0')
insert into t1(c1, habilitado) values(14, '0')
insert into t1(c1) values(15)
insert into t1(c1) values(16)
insert into t1(c1) values(17)
insert into t1(c1, habilitado) values(18, '0')
insert into t1(c1, habilitado) values(19, '0')
insert into t1(c1) values(20)
go

create view v1
as
select
a.c1,
isnull(
(
select
max(b.c1)
from
t1 as b
where
b.c1 >= a.c1
and b.habilitado = '1'
and not exists(
select
*
from
t1 as c
where
c.c1 between a.c1 and b.c1
and (
c.habilitado = '0'
or (c.c1 - (select max(d.c1) from t1 as d where d.c1 >= a.c1 and d.c1 <
c.c1)) > 1
)
)
), a.c1) as c2
from
t1 as a
where
habilitado = '1'
go

select
min(c1) as c1,
c2
from
v1
group by
c2
order by
c2
go

drop view v1
go

drop table t1
go


AMB

"Ricardo" wrote:


Hola Alejando, gracias por tu respuesta, como puedo adaptar tu consulta
poruqe los numeros que no incluyo son los que cumplen una condicion de
deshabilitados?

Lo que necesito es obtener el minimo y maximo de los registros que quedan
entre los numeros deshabilitados.

gracias de nuevo, Ricardo


Alejandro Mesa wrote:

> Trata,

> use northwind
> go

> create table t1 (
> c1 int not null unique
> )
> go

> insert into t1 values(1)
> insert into t1 values(2)
> insert into t1 values(3)
> insert into t1 values(5)
> insert into t1 values(7)
> insert into t1 values(8)
> insert into t1 values(9)

> insert into t1 values(12)

> insert into t1 values(15)
> insert into t1 values(16)
> insert into t1 values(17)

> insert into t1 values(20)
> go

> create view v1
> as
> select
> a.c1,
> isnull(
> (
> select
> max(b.c1)
> from
> t1 as b
> where
> b.c1 >= a.c1
> and not exists(
> select
> *
> from
> t1 as c
> where
> c.c1 between a.c1 and b.c1
> and (c.c1 - (select max(d.c1) from t1 as d where d.c1 >= a.c1 and d.c1 <
> c.c1)) > 1
> )
> ), a.c1) as c2
> from
> t1 as a
> go

> select
> min(c1) as c1,
> c2
> from
> v1
> group by
> c2
> order by
> c2
> go

> drop view v1
> go

> drop table t1
> go


> AMB


> "Ricardo" wrote:

> > Hola a todos, tengo un problema con una consulta para realizar un reporte
> > en cristal rep. que no se como sulucionar.
> >
> > Tengo una tabla con 150000 numeros de facturas, algunas tienen una
> > condicion de deshabilitadas y de los demas registros quisiera obtener el
> > maximo y minimo cada vez que se corta la numeracion, para no listar todos
> > los registos.
> >
> > por ej.
> > 001
> > 002
> > 003
> > 005
> > 007
> > 008
> > 009
> > y que quede
> > min / max
> > 001-003
> > 005-005
> > 007-009
> >
> > gracias de antemano, Ricardo
> >
> >



Respuesta Responder a este mensaje
#5 swricardo
09/06/2005 - 00:23 | Informe spam
Alejandro Gracias de nuevo, tengo un problema con la consulta que me
pasaste, los campos son varchar y char de habilitado.


Como convierto la consulta para estos tipos de datos?

Gracias de nuevo,Ricardo

Alejandro Mesa wrote:

Ve si esta versión te sirve de algo:

use northwind
go

create table t1 (
c1 int not null unique,
habilitado char(1) not null default('1') check(habilitado in ('0', '1'))
)
go

insert into t1(c1) values(1)
insert into t1(c1) values(2)
insert into t1(c1) values(3)
insert into t1(c1) values(5)
insert into t1(c1) values(7)
insert into t1(c1) values(8)
insert into t1(c1) values(9)
insert into t1(c1, habilitado) values(10, '0')
insert into t1(c1, habilitado) values(11, '0')
insert into t1(c1) values(12)
insert into t1(c1, habilitado) values(13, '0')
insert into t1(c1, habilitado) values(14, '0')
insert into t1(c1) values(15)
insert into t1(c1) values(16)
insert into t1(c1) values(17)
insert into t1(c1, habilitado) values(18, '0')
insert into t1(c1, habilitado) values(19, '0')
insert into t1(c1) values(20)
go

create view v1
as
select
a.c1,
isnull(
(
select
max(b.c1)
from
t1 as b
where
b.c1 >= a.c1
and b.habilitado = '1'
and not exists(
select
*
from
t1 as c
where
c.c1 between a.c1 and b.c1
and (
c.habilitado = '0'
or (c.c1 - (select max(d.c1) from t1 as d where d.c1 >= a.c1 and d.c1 <
c.c1)) > 1
)
)
), a.c1) as c2
from
t1 as a
where
habilitado = '1'
go

select
min(c1) as c1,
c2
from
v1
group by
c2
order by
c2
go

drop view v1
go

drop table t1
go


AMB

"Ricardo" wrote:

>
> Hola Alejando, gracias por tu respuesta, como puedo adaptar tu consulta
> poruqe los numeros que no incluyo son los que cumplen una condicion de
> deshabilitados?
>
> Lo que necesito es obtener el minimo y maximo de los registros que quedan
> entre los numeros deshabilitados.
>
> gracias de nuevo, Ricardo
>
>
> Alejandro Mesa wrote:
>
> > Trata,
>
> > use northwind
> > go
>
> > create table t1 (
> > c1 int not null unique
> > )
> > go
>
> > insert into t1 values(1)
> > insert into t1 values(2)
> > insert into t1 values(3)
> > insert into t1 values(5)
> > insert into t1 values(7)
> > insert into t1 values(8)
> > insert into t1 values(9)
>
> > insert into t1 values(12)
>
> > insert into t1 values(15)
> > insert into t1 values(16)
> > insert into t1 values(17)
>
> > insert into t1 values(20)
> > go
>
> > create view v1
> > as
> > select
> > a.c1,
> > isnull(
> > (
> > select
> > max(b.c1)
> > from
> > t1 as b
> > where
> > b.c1 >= a.c1
> > and not exists(
> > select
> > *
> > from
> > t1 as c
> > where
> > c.c1 between a.c1 and b.c1
> > and (c.c1 - (select max(d.c1) from t1 as d where d.c1 >= a.c1 and


d.c1 <
> > c.c1)) > 1
> > )
> > ), a.c1) as c2
> > from
> > t1 as a
> > go
>
> > select
> > min(c1) as c1,
> > c2
> > from
> > v1
> > group by
> > c2
> > order by
> > c2
> > go
>
> > drop view v1
> > go
>
> > drop table t1
> > go
>
>
> > AMB
>
>
> > "Ricardo" wrote:
>
> > > Hola a todos, tengo un problema con una consulta para realizar un


reporte
> > > en cristal rep. que no se como sulucionar.
> > >
> > > Tengo una tabla con 150000 numeros de facturas, algunas tienen una
> > > condicion de deshabilitadas y de los demas registros quisiera obtener


el
> > > maximo y minimo cada vez que se corta la numeracion, para no listar


todos
> > > los registos.
> > >
> > > por ej.
> > > 001
> > > 002
> > > 003
> > > 005
> > > 007
> > > 008
> > > 009
> > > y que quede
> > > min / max
> > > 001-003
> > > 005-005
> > > 007-009
> > >
> > > gracias de antemano, Ricardo
> > >
> > >
>
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida