Je souhaite générer un numéro de ligne pour chaque ligne dans les résultats d'une requête SQL. Comment est-il possible de faire ça?
Exemple: dans la requête
select distinct client_name from deliveries
J'aimerais ajouter une colonne indiquant le numéro de ligne
Je travaille sur le serveur SQL 2005.
Cela dépend de la base de données que vous utilisez. Une option qui fonctionne pour SQL Server, Oracle et MySQL:
SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, *
FROM SomeTable
Modifier SomeField et SomeTable est en fonction de votre table spécifique et du champ pertinent à commander. Il est préférable que SomeField soit naturellement unique dans le contexte de la requête.
Dans votre cas, la requête serait la suivante (Faiz l'a conçue en premier):
SELECT ROW_NUMBER() OVER (ORDER BY client_name) AS row_number, client_name
FROM (SELECT DISTINCT client_name FROM deliveries) TempTable
Je pense que cela ne fonctionnera pas pour SQLite (si quelqu'un peut me corriger ici, je vous en serais reconnaissant), je ne sais pas quelle est l'alternative.
Vous pouvez utiliser la fonction ROW_NUMBER pour cela. Vérifiez la syntaxe pour ceci ici http://msdn.Microsoft.com/en-us/library/ms186734.aspx
SELECT FirstName, LastName, ROW_NUMBER() OVER(ORDER BY FirstName) AS 'Row#'
FROM Sales.vSalesPerson;
Pour votre requête,
SELECT client_name, ROW_NUMBER() Over (Order By client_name) AS row_number
FROM (select distinct client_name from deliveries) SQ
marchera.
Dans 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, nous utilisons également cette requête:
select row_number() over (order by table_kid) as S_No ,table_columnname,table_columnname2 from tablename where table_fieldcondition='condtionnal falg or data ';
Ici table_kid ou peut être une autre table_columnname