2010-07-27 2 views
6

Je pense que chaque ligne du serveur sql reçoit un numéro unique. Comment puis-je inclure cela dans mes résultats de requête SQL?Inclure le numéro de ligne dans le résultat de la requête (SQL Server)

+0

Pour autant que je sache, aucun numéro est ther unique juste la clé primaire que vous avez déclaré. – Hinek

+0

Généralement, le premier champ de la table - éventuellement nommé 'id' ou quelque chose comme ça - est la clé primaire, qui est généralement un entier qui augmente de 1 pour chaque nouvelle ligne ... donc c'est comme un numéro de ligne. Mais nous devrions savoir comment la table est organisée pour dire s'il y a un champ id et, si oui, comment l'extraire. – ewall

Répondre

22

Si vous faites référence au numéro de ligne fourni par Management Studio lorsque vous exécutez une requête, il n'y a aucun moyen de l'obtenir car il n'existe pas réellement. Management Studio génère cela à la volée. Vous pouvez cependant recréer un numéro séquentiel à l'aide de la fonction de classement ROW_NUMBER si vous utilisez SQL Server 2005 ou version ultérieure. Notez que vous ne devez jamais supposer que la base de données retournera les lignes dans un ordre spécifié à moins que vous n'incluiez une instruction Order By. Ainsi, votre requête pourrait ressembler à:

Select .... 
    , Row_Number() Over (Order By T.SomeColumn) As Num 
From Table As T 
Order By T.SomeColumn 

par voie d'ordonnance dans la clause OVER est utilisée pour déterminer l'ordre de création des numéros séquentiels. La clause Order By à la fin de la requête est utilisée pour déterminer l'ordre des lignes dans la sortie (c'est-à-dire que l'ordre du numéro de séquence et l'ordre des lignes peuvent être différents).

+0

Nice :). J'ai fait row_number sur ma colonne de clé primaire. De cette façon, j'ai un numéro séquentiel de 1 sans aucun écart (même si la ligne est supprimée). – TCM

2

L'unicité de votre résultat sera toujours votre clé primaire.

Mais il y a quelque chose appelé ROW_NUMBER qui peut être utilisé comme identité unique de ligne dans un résultat spécifique.

SELECT zip,city,state,latitude,longitude,timezone,dst, 
      ROW_NUMBER() OVER (ORDER BY zip) AS num 
      FROM dbo.zipcode; 
-1

Je pense que vous devriez utiliser celui-ci ....

DCount('Column_Name','Table_Name','Column_Name <= ' & [Column_Name]) as SR

+0

'DCount()' n'est pas une fonction dans SQL Server. – Smandoli

Questions connexes