Bonjour,
Je suis newbie sur SQL sever, et j'aurai besoin de faire un FIRST (que j'utilisais souvent avec access). Cette fonction d'agrégation semble ne pas exister dans SQL Server.
Voilà le scénario :
J'ai une requête qui me ramène des données de plusieurs tables, groupées sur la valeur d'un champ. Pour chaque groupe, je veux récupérer la valeur du champ IMAGE du premier enregistrement. J'utilise donc MIN, naif comme je suis. Mais dans le champ IMAGE, la valeur a toujours cette forme : un id numérique, la lettre p, et un numéro de page (ex : 123456p12). Voici mon soucis : le MIN s'applique au niveau texte, et pour SQL 123456p10 est plus petit que 123456p8 !! (ce qui est logique)
Donc, je cherche depuis 2 jours à simuler le first. Comme je n'y connais rien en Transact-SQL, je ne sais pas faire de fonctions, ou de procédures stockées.
Quelqu'un peut-il m'aider ?
Voici un exemple :
Données initiales :
ID Titre IMAGE
1 Titre1 123456p1.BMP
2 Titre2 123456p8.BMP
3 Titre2 123456p9.BMP
4 Titre2 123456p10.BMP
5 Titre2 123456p11.BMP
6 Titre2 123456p12.BMP
7 Titre3 123456p16.BMP
8 Titre3 123456p17.BMP
Ce que j'obtiens :
ID Titre IMAGE
1 Titre1 123456p1.BMP
2 Titre2 123456p10.BMP
7 Titre3 123456p16.BMP
Ce que je souhaite obtenir :
ID Titre IMAGE
1 Titre1 123456p1.BMP
2 Titre2 123456p8.BMP
7 Titre3 123456p16.BMP
Voici le code que j'utilise
SELECT MIN(ID), Titre, MIN(IMAGE)
FROM mesTables
GROUP BY Titre
ORDER BY ID
Voilà ce que j'imagine comme code :
SELECT MIN(ID), Titre, First(IMAGE)
FROM mesTables
GROUP BY Titre
ORDER BY ID
Je vous remercie d'avance
@peluche
DA