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