database - row_number - rownum db2 as400
NĂºmeros de fila para una consulta en informix (4)
Creo que la manera más fácil sería usar el siguiente código y ajustar su retorno en consecuencia. SELECCIONAR rowid, * FROM table
Funciona para mí, pero tenga en cuenta que devolverá el número de fila en la base de datos, no el número de fila en la consulta.
PD: es una respuesta aceptada de Experts Exchange .
Estoy usando la base de datos de informix, quiero una consulta que también podría generar un número de fila junto con la consulta
Me gusta
select row_number(),firstName,lastName
from students;
row_number() firstName lastName
1 john mathew
2 ricky pointing
3 sachin tendulkar
Aquí firstName, lastName son de la base de datos, donde se genera el número de fila en una consulta.
Es posible que no pueda usar ROWID en una tabla fragmentada en varios DBSpaces, por lo que cualquier solución que use ROWID no es particularmente portátil. También es fuertemente desaconsejado.
Si no tiene una columna SERIAL en su tabla fuente (que es una forma mejor de implementar esto como concepto general), eche un vistazo a CREATE SEQUENCE , que es más o menos el equivalente de una función Orrible que genera números únicos cuando se SELECCIONA desde (a diferencia de SERIAL, que genera el número único cuando la fila está INSERTADA).
La mejor manera es usar una secuencia (recién inicializada).
begin work;
create sequence myseq;
select myseq.nextval,s.firstName,s.lastName from students s;
drop sequence myseq;
commit work;
Dada una tabla llamada Table3 con 3 columnas:
colnum name datatype
======= ===== ===
1 no text;
2 seq number;
3 nm text;
NOTA: seq es un campo dentro de la Tabla que tiene valores únicos en orden ascendente. Los números no tienen que ser contiguos.
Aquí está la consulta para devolver un número de Rown (RowNum) junto con el resultado de la consulta
SELECT table3.no, table3.seq, Table3.nm,
(SELECT COUNT(*) FROM Table3 AS Temp
WHERE Temp.seq < Table3.seq) + 1 AS RowNum
FROM Table3;