Je veux extraire datatables de ma table et je veux avoir ce résultat:
1 Valore 2 Valore 3 Valore 4 Valore
Donc, je veux numéroter chaque ROW de 1 à N.
Ceci est ma requête mais ne fonctionne pas:
SELECT COUNT(DISTINCT dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName)) AS Count, dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName) AS NAME FROM AA_V_PHR_CCD_ResultsObservation R INNER JOIN AA_V_PHR_CCD_ResultsObservationXLanguages RR ON R.ID = RR.ID WHERE CodeSystem = '123456789' GROUP BY dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName)
MODIFIER
- SQL Server ajoute des espaces vides à la valeur (char) lors de la tentative de définition de null
- C # – get des données entre les dates
- Je reçois une erreur pour l'insertion de données dans SQL Server via VB.Net
- SQL Soustraire deux colonnes sur des tables différentes
- Comment split un logging en plusieurs lignes dans SQL Server
Ma database est Tsql
et voici mes données d'extrait:
1 Valore 1 Pippo 1 Pluto
Au lieu de
1 Valore 2 Pippo 3 Pluto
Le count ne change pas par ligne; il y a toujours le même nombre de rangées; ce que vous semblez vouloir n'est pas un count, mais un numéro de rangée.
Pour get un numéro de ligne, vous devez utiliser l'API ROW_NUMBER
; par exemple:
SELECT ROW_NUMBER() OVER ( ORDER BY dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName)) as [Position], dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName) as [Name] ... ORDER BY dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName)
Cependant, sauf si vous êtes en train de partitionner (donc en obtenant un numéro de ligne par partition), il serait plus facile de gérer cela sur le client de réception.
Cela devrait faire le travail:
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Count, dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName) AS NAME FROM AA_V_PHR_CCD_ResultsObservation R INNER JOIN AA_V_PHR_CCD_ResultsObservationXLanguages RR ON R.ID = RR.ID WHERE CodeSystem = '123456789' GROUP BY dbo.F_ElementSsortingngFromCodeDescription(RR.ID, RR.DisplayName)
Vous pourriez faire en utilisant la fonction rownum. Ce serait spécifique à chaque DB que vous utilisez, mais voici un exemple d'Oracle:
Select rownum, <ColumnList> from (select <ColumnList> ...)
La documentation TSQL indique que l'équivalent est la fonction ROW_NUMBER ().
Pour TSQL:
Select ROW_NUMBER() OVER ([PartitionBy] OrderByClause), <ColumnList>...
Ceci est ma solution est la plus rapide
CREATE TABLE Test ( ID INT PRIMARY KEY, VAL VARCHAR(64)); INSERT INTO Test (ID,VAL) VALUES (8,"a"),(156,"b"),(99,"c"); SET @t1=0; SELECT @t1:=@t1 + 1 as 'num', VAL FROM Test;
EN DEHORS
num | VAL 1 | a 2 | c 3 | b