Hola amigos, les solicito ayuda para lo siguiente, tengo una tabla que
contiene estos datos:

postg...@contable[localhost]=# select idgrupo,grupo from cc_grupos;
 idgrupo |     grupo
---------+---------------
       4 | LAS PAGADORAS
       5 | BACILADORAS
       1 | ABCD
       3 | DENOMINACION
(4 filas)

Entonces quiero mantener un campo que despues de ordenados los registros,
mantega un consecutivo respectivo a su fila:

postg...@contable[localhost]=# begin; create sequence s; select nextval('s')
as offset,x.idgrupo,x.grupo from (select cc.idgrupo,cc.grupo from cc_grupos
cc order by cc.grupo) x;rollback;
BEGIN
CREATE SEQUENCE
 offset | idgrupo |     grupo
--------+---------+---------------
      1 |       1 | ABCD
      2 |       5 | BACILADORAS
      3 |       3 | DENOMINACION
      4 |       4 | LAS PAGADORAS
(4 filas)

Hasta esta parte todo va perfecto, mi duda es con respecto a cuando filtro
esta tabla resultante, ya que si yo le digo que me de la fila donde el
idgrupo sea igual a 5,
en teoria debo obtener:
 offset | idgrupo |     grupo
--------+---------+---------------
      2 |       5 | BACILADORAS

pero, no es así, al hacer:

postg...@contable[localhost]=# begin; create sequence s; select * from
(select nextval('s') as offset,idgrupo,grupo from (select idgrupo,grupo from
cc_grupos order by grupo) x ) xx where idgrupo=5;rollback;

obtengo lo siguiente:

BEGIN
CREATE SEQUENCE
 offset | idgrupo |    grupo
--------+---------+-------------
      1 |       5 | BACILADORAS
(1 fila)

ROLLBACK

en que me estoy equivocando?, o por que es que no regresa 2 en la columna
offset?.

Responder a