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

#6 Alejandro Mesa
09/06/2005 - 13:51 | Informe spam
Ricardo,

Creo que en este punto, lo mejor seria que postearas la definicion de tu
tabla, datos de ejemplos y el resultado esperado. Con esto no solamente
tendria una mejor idea de lo que se quiere sino tambien que evitaria el crear
mas de una solucion que no se adapta a tus requerimientos.

Saludos,

AMB

"Ricardo" wrote:


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
#7 swricardo
09/06/2005 - 23:39 | Informe spam
Hola Alejandro gracias por tu ayuda, disculpa que sea tan insistente pero
no se como puedo resolver esta consulta, te paso el codigo de mi tabla.

CREATE TABLE [dbo].[TDetalle_Documento] (
[Documento] [varchar] (10) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[NroRemesa] [int] NOT NULL ,
[NroRenglon] [int] NOT NULL ,
[Habilitado] [char] (1) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[IdForma] [varchar] (4) COLLATE Modern_Spanish_CI_AS NULL ,
[Asignado] [bit] NOT NULL ,
) ON [PRIMARY]
GO
Lo que necesito es agrupar los rangos de los documentos cuando 'habilitado
=H' y 'asignado = 0', necesito el primer y ultimo numero de cada rango
para evitar imprimir un listado tan largo.

mi idea es que quedara:
MINDOCUMENTO Y MAXDOCUMENTO

Gracias de nuevo, y espero haber sido mas claro. Ricardo

Alejandro Mesa wrote:

Ricardo,

Creo que en este punto, lo mejor seria que postearas la definicion de tu
tabla, datos de ejemplos y el resultado esperado. Con esto no solamente
tendria una mejor idea de lo que se quiere sino tambien que evitaria el


crear
mas de una solucion que no se adapta a tus requerimientos.

Saludos,

AMB

"Ricardo" wrote:

>
> 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
> > > > >
> > > > >
> > >
> > >
> > >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida