|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Thierry RICALDéveloppeur informatique Inscription : août 2006 Messages : 584 ![]() |
Bonjour a tous
J'ai ici en dessous une requête ( qui fonctionne presque bien), en effet, je souhaiterais regroupé les articles de même famille'(DocDetail.DocDetailIdFamille)' et en faire le total des quantiés. Quelqu'un vois comment je dois m'y prendre et cette requête ( ci-dessous) ,est elle bien écrite Merci bien de l'aide Code :
__________________
La Connaissance est comme la joie elle s'accroît en la partageant!
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Non, et déjà ça saute au yeux : aucune indentation => mauvaise lisibilité.
Pas d'utilisation des alias de tables, pas de préfixe avec les schémas. Trop de parenthèses inutiles dans les filtres, utilisation d'un littéral pour comparaison avec une date. Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Thierry RICALDéveloppeur informatique Inscription : août 2006 Messages : 584 ![]() |
Bonjour,
Et déjà merci pour cette réponse qui me permes de corrigé la syntaxe de ma requête Dans le résultat de cette requête j'ai 8 lignes en retour dont certaine continne des articles identiques, mais sur des numéro de document différent. Je souhaiterais effectué un groupage des articles identiques et en faire le total des quantiés et n'avoir qu'une ligne contenant cet article et son total merci
__________________
La Connaissance est comme la joie elle s'accroît en la partageant!
|
|
|
00
|
|
|
#4 |
![]() ![]() |
Je vous laisse chercher un peu en vous indiquant ce tutoriel sur les groupages :
http://sqlpro.developpez.com/cours/sqlaz/ensembles/ N'hésitez pas à revenir si vous rencontrez des problèmes, et si vous trouvez la solution bien entendu !
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Thierry RICALDéveloppeur informatique Inscription : août 2006 Messages : 584 ![]() |
J'ai ajouter la fonction suivante dans la partie select
" SUM (DocDetail.DocDetailQuantite) AS TotalQu " et le " GROUP BY DocDetail.DocDetailIdFamille " mais a l'execution il me dit que "Clients.Nom ne fait pas partie de la clause GROUP BY " et je ne souhaites pas faire une Groupement sur cette colonne
__________________
La Connaissance est comme la joie elle s'accroît en la partageant!
|
|
|
00
|
|
|
#6 |
![]() ![]() Chef de projet NTIC Inscription : avril 2007 Messages : 1 782 ![]() |
Regarde du côté du partitionnement des résultats.
Code :
SUM (DocDetail.DocDetailQuantite) over(partition BY DocDetail.DocDetailIdFamille ORDER BY DocDetail.DocDetailIdFamille) AS TotalQu |
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Thierry RICALDéveloppeur informatique Inscription : août 2006 Messages : 584 ![]() |
Ouchti
Je suis un peut nouveau dans le domaine SQL sa se vois déjà a la syntaxe de ma requête
__________________
La Connaissance est comme la joie elle s'accroît en la partageant!
|
|
|
00
|
|
|
#8 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Attention WALDAR, évitez les fonctions ODBC !!! { } , c'est spécifique, non SQL, non portable, obsolète et contre performant (transformation en SQL)
Plus simplement : AND dad.DateEcheance between '20110126' and '20010201' Citation:
Attention calagan99, SQL Server ne supporte pas encore les fonctions de fenêtrage avec clause ODER BY pour les agrégats (SUM, COUNT...). A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Thierry RICALDéveloppeur informatique Inscription : août 2006 Messages : 584 ![]() |
Bonjour SQLPro
Dans le format de date utilisé, cela tient t'il compte de la culture ou paramètres régionaux , ou cela est totalement indifférent ????
__________________
La Connaissance est comme la joie elle s'accroît en la partageant!
|
|
|
00
|
|
|
#10 | |
![]() ![]() Chef de projet NTIC Inscription : avril 2007 Messages : 1 782 ![]() |
Citation:
Merci pour la remarque. Je rectifie donc : Code :
SUM (DocDetail.DocDetailQuantite) over(partition BY DocDetail.DocDetailIdFamille) AS TotalQu |
|
|
|
00
|
|
|
#11 | ||||
![]() ![]() |
J'ignorais que c'était l'api ODBC, je pensais que c'était natif à SQL-Server.
Je trouvais que c'était une bonne idée ! Même si la comparaison de date peut se faire directement contre une chaîne de caractère au format ISO 8601 (yyyy-mm-dd ou yyyymmdd), jamais jamais jamais je ne le ferai ou même ne le conseillerai, c'est l'anarchie dans les explications par la suite. Comment faire comprendre simplement que les deux littéraux ne sont pas les mêmes dans cette requête : Code :
La fonction ODBC à au moins le mérite de lever toute incertitude : Code :
Ce serait tellement plus simple si SQL-Server se pliait à la norme et implémentait - comme Oracle - le mot-clef date :
__________________
Email : http://scr.im/waldar |
||||
|
00
|
Copyright © 2000-2012 - www.developpez.com