Подтвердить что ты не робот

SQL для вывода номера строки в результатах запроса

Я хотел бы создать номер строки для каждой строки в результатах запроса sql. Как это можно сделать?

Пример: в запросе

select distinct client_name from deliveries

Я хотел бы добавить столбец с номером строки

Я работаю над SQL Server 2005.

4b9b3361

Ответ 1

Это зависит от используемой вами базы данных. Один из вариантов, который работает для SQL Server, Oracle и MySQL:

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

Изменить SomeField и SomeTable в соответствии с вашей конкретной таблицей и соответствующим полем для заказа. Предпочтительно, чтобы SomeField был уникальным в контексте запроса, естественно.

В вашем случае запрос будет следующим: (Файз сначала создал такой запрос):

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

Я думаю, что это не сработает для SQLite (если кто-то может исправить меня здесь, я был бы признателен), я не уверен, что там есть.

Ответ 2

Для этого вы можете использовать функцию ROW_NUMBER. Проверьте здесь синтаксис http://msdn.microsoft.com/en-us/library/ms186734.aspx

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

Для вашего запроса

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

будет работать.

Ответ 3

В 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>

Ответ 4

- В SQL мы также используем один и тот же запрос, а также -

выберите row_number() over (order by table_kid) как S_No, table_columnname, table_columnname2 из tablename, где table_fieldcondition = 'condtionnal falg или data';

- Здесь table_kid или может быть другим именем таблицы_column

Ответ 5

ИЛИ вы также можете сделать

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;

надеюсь, что это тоже помогает:)