SQL para mostrar el número de línea en los resultados de una consulta

Me gustaría generar un número de línea para cada línea en los resultados de una consulta SQL. ¿Cómo es posible hacer eso?

Ejemplo: en la request

select distinct client_name from deliveries 

Me gustaría agregar una columna que muestre el número de línea

Estoy trabajando en SQL Server 2005.

Depende de la database que esté utilizando. Una opción que funciona para SQL Server, Oracle y MySQL:

 SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, * FROM SomeTable 

Cambie SomeField y SomeTable de acuerdo con su tabla específica y campo relevante para orderar por. Se prefiere que SomeField sea único en el context de la consulta, naturalmente.

En su caso, la consulta sería la siguiente (Faiz creó una consulta de este tipo primero):

 SELECT ROW_NUMBER() OVER (ORDER BY client_name) AS row_number, client_name FROM (SELECT DISTINCT client_name FROM deliveries) TempTable 

Creo que no funcionará para SQLite (si alguien me puede corregir aquí estaría agradecido), no estoy seguro de cuál es la alternativa allí.

Puede usar la function ROW_NUMBER para esto. Compruebe la syntax para esto aquí http://msdn.microsoft.com/en-us/library/ms186734.aspx

 SELECT FirstName, LastName, ROW_NUMBER() OVER(ORDER BY FirstName) AS 'Row#' FROM Sales.vSalesPerson; 

Para su consulta,

 SELECT client_name, ROW_NUMBER() Over (Order By client_name) AS row_number FROM (select distinct client_name from deliveries) SQ 

trabajará.

En Oracle

 SQL> select row_number() over (order by deptno) as rn 2 , deptno 3 from 4 ( select distinct deptno 5 from emp 6 ) 7 / RN DEPTNO ---------- ---------- 1 10 2 20 3 30 SQL> 

–En SQL también estamos utilizando la misma consulta, así como –

select row_number () over (order by table_kid) como S_No, table_columnname, table_columnname2 from tablename donde table_fieldcondition = 'fallos o datos conformes';

–Here table_kid o puede ser otro table_columnname

O también podrías hacer

 SELECT DISTINCT client_name, @num := @num + 1 AS lineNum(this is your new col) FROM deliveries JOIN (SELECT @num :=0) AS n ON 1=1; 

Espero que esto ayude también 🙂