Bien le Bonjour!
La requ=EAte ci-dessous extrait les valeurs d'une table=20
comprenant 7 colonnes et 200000 records.jusque-l=E0 y'a pas=20
de probl=E8me. Mais comment puis-je faire pour ajouter les 5=20
autres colonnes correspondantes aux valeurs extraites de=20
cette requ=EAte ?
Ma requ=EAte sort 6701 record, ce qui est juste mais d=E8s=20
lors que j'ajoute dans la clause select les autre=20
colonnes, je me retrouve avec 145407 records... O=F9 est le=20
probl=E8me ???
SELECT fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10),=20
datetimes, 101))) 'test'
FROM fs_stat=20
GROUP BY fsname, CONVERT(datetime, CONVERT(CHAR(10),=20
datetimes, 101)) HAVING=20
CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) =3D MIN
(CONVERT(datetime,=20
CONVERT(CHAR(10), datetimes, 101)))=20
ORDER BY fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10),=20
datetimes, 101)))
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas LETULLIER
Le problème est qu'en rajoutant des champs dans ton SELECT, vu que tu as une aggrégation, tu es obligé de les rajouter dans le GROUP BY, du coup, elle se fait à un niveau inférieur.
Il te faudrait passer par une sous-requête (celle contenant le GROUP BY) pour afficher les champs supplémentaires.
Nicolas.
"Kigner" a écrit dans le message de news:0a1701c39e00$a7e9eca0$ Bien le Bonjour! La requête ci-dessous extrait les valeurs d'une table comprenant 7 colonnes et 200000 records.jusque-là y'a pas de problème. Mais comment puis-je faire pour ajouter les 5 autres colonnes correspondantes aux valeurs extraites de cette requête ? Ma requête sort 6701 record, ce qui est juste mais dès lors que j'ajoute dans la clause select les autre colonnes, je me retrouve avec 145407 records... Où est le problème ???
SELECT fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) 'test' FROM fs_stat GROUP BY fsname, CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) HAVING CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) = MIN (CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) ORDER BY fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)))
Merci d'avance! bonne journée! Kigner
Le problème est qu'en rajoutant des champs dans ton SELECT, vu que tu as une
aggrégation, tu es obligé de les rajouter dans le GROUP BY, du coup, elle se
fait à un niveau inférieur.
Il te faudrait passer par une sous-requête (celle contenant le GROUP BY)
pour afficher les champs supplémentaires.
Nicolas.
"Kigner" <i134@caramail.com> a écrit dans le message de
news:0a1701c39e00$a7e9eca0$a301280a@phx.gbl...
Bien le Bonjour!
La requête ci-dessous extrait les valeurs d'une table
comprenant 7 colonnes et 200000 records.jusque-là y'a pas
de problème. Mais comment puis-je faire pour ajouter les 5
autres colonnes correspondantes aux valeurs extraites de
cette requête ?
Ma requête sort 6701 record, ce qui est juste mais dès
lors que j'ajoute dans la clause select les autre
colonnes, je me retrouve avec 145407 records... Où est le
problème ???
SELECT fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10),
datetimes, 101))) 'test'
FROM fs_stat
GROUP BY fsname, CONVERT(datetime, CONVERT(CHAR(10),
datetimes, 101)) HAVING
CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) = MIN
(CONVERT(datetime,
CONVERT(CHAR(10), datetimes, 101)))
ORDER BY fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10),
datetimes, 101)))
Le problème est qu'en rajoutant des champs dans ton SELECT, vu que tu as une aggrégation, tu es obligé de les rajouter dans le GROUP BY, du coup, elle se fait à un niveau inférieur.
Il te faudrait passer par une sous-requête (celle contenant le GROUP BY) pour afficher les champs supplémentaires.
Nicolas.
"Kigner" a écrit dans le message de news:0a1701c39e00$a7e9eca0$ Bien le Bonjour! La requête ci-dessous extrait les valeurs d'une table comprenant 7 colonnes et 200000 records.jusque-là y'a pas de problème. Mais comment puis-je faire pour ajouter les 5 autres colonnes correspondantes aux valeurs extraites de cette requête ? Ma requête sort 6701 record, ce qui est juste mais dès lors que j'ajoute dans la clause select les autre colonnes, je me retrouve avec 145407 records... Où est le problème ???
SELECT fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) 'test' FROM fs_stat GROUP BY fsname, CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) HAVING CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) = MIN (CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) ORDER BY fsname, MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)))
Merci d'avance! bonne journée! Kigner
Kigner
Ok merci mais comment est-ce que je peux construire cette sous-requête ? Je ne vois vraiment pas... Pour le moment c'est moi qui suis agrégait à mon problème ;D
Ok merci mais comment est-ce que je peux construire cette
sous-requête ?
Je ne vois vraiment pas...
Pour le moment c'est moi qui suis agrégait à mon
problème ;D
Ok merci mais comment est-ce que je peux construire cette sous-requête ? Je ne vois vraiment pas... Pour le moment c'est moi qui suis agrégait à mon problème ;D
Nicolas LETULLIER
Il te faudra obligatoirement une clé primaire sur ta table. Si tu n'en as pas, tu peux facilement en rajouter une en INT IDENTITY En considérant idfs_stat comme la clé primaire de la table fs_stat.
SELECT T1.fsname, Q1.min_datetimes, T1.autrechamp1, T1.autrechamp2, ... FROM fs_stat T1 INNER JOIN ( SELECT idfs_stat, MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) 'test' AS min_datetimes FROM fs_stat GROUP BY fsname, CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) HAVING CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) ) AS Q1 ON (T1.idfs_stat = Q1.idfs_stat) ORDER BY T1.fsname, min_datetimes
Requête non testée évidemment ;-)
Nicolas.
"Kigner" a écrit dans le message de news:0a6501c39e04$c40efc00$ Ok merci mais comment est-ce que je peux construire cette sous-requête ? Je ne vois vraiment pas... Pour le moment c'est moi qui suis agrégait à mon problème ;D
Il te faudra obligatoirement une clé primaire sur ta table. Si tu n'en as
pas, tu peux facilement en rajouter une en INT IDENTITY
En considérant idfs_stat comme la clé primaire de la table fs_stat.
SELECT T1.fsname, Q1.min_datetimes, T1.autrechamp1, T1.autrechamp2, ...
FROM fs_stat T1
INNER JOIN (
SELECT idfs_stat, MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes,
101))) 'test' AS min_datetimes
FROM fs_stat
GROUP BY fsname, CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))
HAVING CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)))
) AS Q1 ON (T1.idfs_stat = Q1.idfs_stat)
ORDER BY T1.fsname, min_datetimes
Requête non testée évidemment ;-)
Nicolas.
"Kigner" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:0a6501c39e04$c40efc00$a301280a@phx.gbl...
Ok merci mais comment est-ce que je peux construire cette
sous-requête ?
Je ne vois vraiment pas...
Pour le moment c'est moi qui suis agrégait à mon
problème ;D
Il te faudra obligatoirement une clé primaire sur ta table. Si tu n'en as pas, tu peux facilement en rajouter une en INT IDENTITY En considérant idfs_stat comme la clé primaire de la table fs_stat.
SELECT T1.fsname, Q1.min_datetimes, T1.autrechamp1, T1.autrechamp2, ... FROM fs_stat T1 INNER JOIN ( SELECT idfs_stat, MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) 'test' AS min_datetimes FROM fs_stat GROUP BY fsname, CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) HAVING CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101)) MIN(CONVERT(datetime, CONVERT(CHAR(10), datetimes, 101))) ) AS Q1 ON (T1.idfs_stat = Q1.idfs_stat) ORDER BY T1.fsname, min_datetimes
Requête non testée évidemment ;-)
Nicolas.
"Kigner" a écrit dans le message de news:0a6501c39e04$c40efc00$ Ok merci mais comment est-ce que je peux construire cette sous-requête ? Je ne vois vraiment pas... Pour le moment c'est moi qui suis agrégait à mon problème ;D