SQL для вывода номера строки в результатах запроса
Я хотел бы создать номер строки для каждой строки в результатах запроса sql. Как это можно сделать?
Пример: в запросе
select distinct client_name from deliveries
Я хотел бы добавить столбец с номером строки
Я работаю над SQL Server 2005.
Ответы
Ответ 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;
надеюсь, что это тоже помогает:)