Como contador registros y grabar el conteo en un campo de la tabla

09/11/2005 - 18:23 por Rodolfo | Informe spam
Saludos

Como se puede contar unos registros de una tabla tomando en cuenta que los
de un grupo determinado, grabar el conteo en un campo de la misma tabla y
continuar con el siguiente grupo, y repetir el procedimiento.

El ejemplo es como los registros de una tabla de ítems de facturas: existen
varios o un registro por cada factura, lo que se quiere es contar los ítems o
registros por cada factura y grabar el numero de conteo que le corresponde al
registro en un campo del mismo registro y cuando se terminen los ítems de esa
factura iniciar el conteo otra vez.

Preguntas similare

Leer las respuestas

#6 Rodolfo
10/11/2005 - 01:29 | Informe spam
Hola Alejandro

Gracias por tu ayuda amigo.

Y lo que hay detrás es que doy soporte a una aplicación que maneja la
inserción de ítems de esa forma y necesito hacer una migración de datos con
un procedimiento que estoy desarrollando. Y sin este manejo no me permite
procesar los documentos como lo hace la aplicación.

Buenos una vez mas gracias


"Alejandro Mesa" escribió:

Rodolfo,

Deja ver si entendi bien. Me dices que el item puede repetirse pero con
diferente tipo de empaque, correcto?. De ser asi, entonces debemos usar
tambien la columna empaque para el calculo.

use northwind
go

declare @t table (
factura_id int,
item_id int,
empaque_id int
)

insert into @t values(1, 1, 1)
insert into @t values(1, 1, 2)
insert into @t values(1, 2, 1)
insert into @t values(1, 3, 1)
insert into @t values(2, 1, 1)
insert into @t values(2, 2, 1)
insert into @t values(3, 1, 1)
insert into @t values(3, 1, 2)
insert into @t values(3, 2, 1)
insert into @t values(3, 2, 2)
insert into @t values(3, 3, 1)

select
factura_id,
item_id,
empaque_id,
(
select count(*)
from @t as b
where
b.factura_id = a.factura_id
and
(
b.item_id < a.item_id
or (b.item_id = a.item_id and b.empaque_id <= a.empaque_id)
)
) as rank
from
@t as a
order by
factura_id, rank
go


Yo no se cuales son las intenciones que tienes detras de esto. Por mi parte
te recomiendo que no bases tu esquema en este tipo de numeracion, pues
tendras que actualizar esta columna cada vez que insertes o elimines una
fila, o actualizes una de las columnas usadas para el calculo.


AMB

"Rodolfo" wrote:

> Hermano Alejandro
>
> Muchas gracias funcionó perfecto lo único es que como lo indicaste en tu
> ultimo mensaje si es posible que se repita el ítems, por que el mismo ítems
> puede manejar algo que llamo empaque, es decir, el mismo ítems tiene solo dos
> unidades.
> En la tabla esta un campo que indica la unidad de venta
>
> Ejemplo: ítems A se presenta en paquetes y en unidades.
>
> Hermano si es posible ajustar el query, te lo agradezco
>
> Saludos Alejandro y gracias.
>
> "Alejandro Mesa" escribió:
>
> > Rodolfo,
> >
> > Si la factura no permite dos items del mismo tipo, entonces pudieramos usar
> > algo asi como:
> >
> > update factura_item
> > set rank = (select count(*) from factura_item as f where f.factura_id =
> > factura_item.factura_id and f.item_id <= factura_item.item_id)
> > go
> >
> >
> > AMB
> >
> > "Rodolfo" wrote:
> >
> > > Gracias Alejandro por responder
> > >
> > > Lo quiero guardar en la tabla de factura_item
> > >
> > > saludos
> > >
> > > "Alejandro Mesa" escribió:
> > >
> > > > Rodolfo,
> > > >
> > > > - Pudieras poner un ejemplo?
> > > > - Donde quieres guardar ese valor en la tabla factura o en la tabla
> > > > factura_item?
> > > >
> > > >
> > > > AMB
> > > >
> > > > "Rodolfo" wrote:
> > > >
> > > > > Saludos
> > > > >
> > > > > Como se puede contar unos registros de una tabla tomando en cuenta que los
> > > > > de un grupo determinado, grabar el conteo en un campo de la misma tabla y
> > > > > continuar con el siguiente grupo, y repetir el procedimiento.
> > > > >
> > > > > El ejemplo es como los registros de una tabla de ítems de facturas: existen
> > > > > varios o un registro por cada factura, lo que se quiere es contar los ítems o
> > > > > registros por cada factura y grabar el numero de conteo que le corresponde al
> > > > > registro en un campo del mismo registro y cuando se terminen los ítems de esa
> > > > > factura iniciar el conteo otra vez.
> > > > >
> > > > >
Respuesta Responder a este mensaje
#7 Alejandro Mesa
10/11/2005 - 01:30 | Informe spam
Rodolfo,

Deja ver si entendi bien. Me dices que el item puede repetirse pero con
diferente tipo de empaque, correcto?. De ser asi, entonces debemos usar
tambien la columna empaque para el calculo.

use northwind
go

declare @t table (
factura_id int,
item_id int,
empaque_id int
)

insert into @t values(1, 1, 1)
insert into @t values(1, 1, 2)
insert into @t values(1, 2, 1)
insert into @t values(1, 3, 1)
insert into @t values(2, 1, 1)
insert into @t values(2, 2, 1)
insert into @t values(3, 1, 1)
insert into @t values(3, 1, 2)
insert into @t values(3, 2, 1)
insert into @t values(3, 2, 2)
insert into @t values(3, 3, 1)

select
factura_id,
item_id,
empaque_id,
(
select count(*)
from @t as b
where
b.factura_id = a.factura_id
and
(
b.item_id < a.item_id
or (b.item_id = a.item_id and b.empaque_id <= a.empaque_id)
)
) as rank
from
@t as a
order by
factura_id, rank
go


Yo no se cuales son las intenciones que tienes detras de esto. Por mi parte
te recomiendo que no bases tu esquema en este tipo de numeracion, pues
tendras que actualizar esta columna cada vez que insertes o elimines una
fila, o actualizes una de las columnas usadas para el calculo.


AMB

"Rodolfo" wrote:

Hermano Alejandro

Muchas gracias funcionó perfecto lo único es que como lo indicaste en tu
ultimo mensaje si es posible que se repita el ítems, por que el mismo ítems
puede manejar algo que llamo empaque, es decir, el mismo ítems tiene solo dos
unidades.
En la tabla esta un campo que indica la unidad de venta

Ejemplo: ítems A se presenta en paquetes y en unidades.

Hermano si es posible ajustar el query, te lo agradezco

Saludos Alejandro y gracias.

"Alejandro Mesa" escribió:

> Rodolfo,
>
> Si la factura no permite dos items del mismo tipo, entonces pudieramos usar
> algo asi como:
>
> update factura_item
> set rank = (select count(*) from factura_item as f where f.factura_id =
> factura_item.factura_id and f.item_id <= factura_item.item_id)
> go
>
>
> AMB
>
> "Rodolfo" wrote:
>
> > Gracias Alejandro por responder
> >
> > Lo quiero guardar en la tabla de factura_item
> >
> > saludos
> >
> > "Alejandro Mesa" escribió:
> >
> > > Rodolfo,
> > >
> > > - Pudieras poner un ejemplo?
> > > - Donde quieres guardar ese valor en la tabla factura o en la tabla
> > > factura_item?
> > >
> > >
> > > AMB
> > >
> > > "Rodolfo" wrote:
> > >
> > > > Saludos
> > > >
> > > > Como se puede contar unos registros de una tabla tomando en cuenta que los
> > > > de un grupo determinado, grabar el conteo en un campo de la misma tabla y
> > > > continuar con el siguiente grupo, y repetir el procedimiento.
> > > >
> > > > El ejemplo es como los registros de una tabla de ítems de facturas: existen
> > > > varios o un registro por cada factura, lo que se quiere es contar los ítems o
> > > > registros por cada factura y grabar el numero de conteo que le corresponde al
> > > > registro en un campo del mismo registro y cuando se terminen los ítems de esa
> > > > factura iniciar el conteo otra vez.
> > > >
> > > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida