bonjour,
j'aimerai savoir comment integrer la fonction SQL MAX dans mon fichier pour pouvoir avoir que la ligne DL_NO la plus grande en fonction de chaque AR_Ref.
merci.
Pièce jointe 635749
Version imprimable
bonjour,
j'aimerai savoir comment integrer la fonction SQL MAX dans mon fichier pour pouvoir avoir que la ligne DL_NO la plus grande en fonction de chaque AR_Ref.
merci.
Pièce jointe 635749
Bonjour,
La fonction max(plage de cellules) s'applique à excel alors que la fonction max(colonne) s'utilise en SQL.
Le SQL est applicable sur une base relationnelle, rien à voir avec excel qui est un tableur.
Si votre question concerne excel, il faut donc la poser dans le forum excel
dans mon fichier excel il y a une requette SQL (ci jointe) et c'est bien sur SQL que je voudrais mettre la fonction MAX.
Pièce jointe 635757
bonjour,
j'ai reduit ma requette SQL :
Code:
1
2
3 SELECT F_DOCLIGNE.DL_CMUP, F_DOCLIGNE.DO_Date, F_DOCLIGNE.DO_Domaine, F_DOCLIGNE.DL_No FROM PROGALVA.dbo.F_DOCLIGNE F_DOCLIGNE WHERE (F_DOCLIGNE.DL_CMUP<>0)
comment faire pour avoir la valeur MAX de F_DOCLIGNE.DL_No
merci
Bonjour,
Pour obtenir un agrégat, il faut effectuer un regroupement sur toutes les colonnes non agrégées
Note :
- les parenthèses de la restrictions sont inutiles, autant les enlever
- l'un des intérêts des alias de table, c'est de faciliter le nommage, autant prendre un nom plus court que celui de la table in extenso
Ce qui donne une requête du type :
Code:
1
2
3
4
5
6
7
8
9
10
11 SELECT DL.DL_CMUP , DL.DO_Date , DL.DO_Domaine , DL.DL_No , MAX(DL.DL_No) FROM PROGALVA.dbo.F_DOCLIGNE as DL WHERE DL.DL_CMUP<>0 GROUP BY DL.DL_CMUP , DL.DO_Date , DL.DO_Domaine , DL.DL_No
Et pensez à utiliser les balises CODE (symbole # de la barre d'icones) pour encadrer votre code ;)
merci pour la requette qui fonctionne mais je n'ai plus la colonne AR_Ref.
Pièce jointe 635811Pièce jointe 635811
J'ai construit ma requête en fonction de la votre, dans laquelle il n'y avait pas de colonne AR_REF.
Merci de communiquer la description exacte de la table en jeu (idéalement le script CREATE TABLE) et un exemple de résultat attendu
ok je comprend vous avez pris ma requette limitee au max pour essayer de comprendre comment utiliser la fonction max.
ci joint la requette de base.Pièce jointe 635827
en fait il me faut le plud grand DL_No pour chaque AR_Ref donc une ligne par ref AR_Ref.
merci d'avance.
Sauf que vous n'expliquez pas dans quelle table se trouve la colonne DL_NO, on ne peut pas le deviner.
C'est pourquoi je vous ai demandé plus haut la description exacte des tables, pas une copie d'écran avec des schémas partiels, mais le script contenant les ordres CREATE TABLE.
Si la colonne DL_NO se trouve dans une autre table que celle où se trouve la colonne AR_REF (donc si DL_NO n'est pas dans la table F_ARTSTOCK), il faudra mettre en œuvre des jointures.
Du coup la requête ressemblera à quelque chose comme ceci, à adapter en fonction du nom de la table où se trouve DL_NO et des noms de colonnes de jointure.
Code:
1
2
3
4
5
6
7 select AST.AR_Ref , mas(XXX.DL_NO) from F_ARTSTOCK as AST inner join autre_table as XXX on XXX.colonneX = AST.colonneY and XXX.colonneZ = AST.colonneW group by AST.AR_Ref
bonjour,
effectivement le DL_NO est dans la table F_DOCLIGNE.DL_No et l'info sommiel est dans la table F_ARTICLE.AR_Sommeil , du coup comment faut il faire pour joindre plusieurs table ?
La réponse est dans mon post précédent...
On tourne en rond, si vous aviez communiqué le script de création des tables (DDL avec les ordres CREATE TABLE), comme je le réclame depuis le début, il y a longtemps que le problème serait résolu !
Le DDL ça ressemble à ceci :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE AG_agent( AG_ident INT IDENTITY, AG_nom VARCHAR(50) NOT NULL, AG_prenom VARCHAR(50) NOT NULL, PRIMARY KEY(AG_ident) ); CREATE TABLE SI_site( SI_ident INT IDENTITY, SI_code CHAR(6) NOT NULL, SI_nom VARCHAR(50) NOT NULL, PRIMARY KEY(SI_ident), UNIQUE(SI_code) );
Vous donnez les informations au compte-goutte, c'est pour ça qu'on n'avance pas.
j'ai modifié la requete comme ca:
et ça fonctionne mais j'aurais besoin d'avoir DL CMUP qui est dans la table F DOCLIGNE , DO DATE qui est dans la table F DOC LIGNE et AR SOMMEIL qui est dans la table F ARTICLE.Code:
1
2
3
4
5
6
7 select AST.AR_Ref , max(DOC.DL_NO) from F_ARTSTOCK as AST inner join F_DOCLIGNE as DOC on DOC.AR_Ref = AST.AR_Ref and DOC.AR_Ref = AST.AR_Ref group by AST.AR_Ref
ce qu'il me faut comme résultat c'est :
AR REF avec le plus récent DL NO et avec toutes les autres infos sur les lignes.
merci beaucoup
comment faut il faire pour trouver le DDL ?
Quel est le SGBD ?
je ne sais pas trop tout ce que je peux vous dire c'est que c'est une base SQL et la requette est faite avec MS QUERY.
Que donnent les commandes :
SELECT @@VERSION ==> applicable sur SQL Server, MySQL et MariaDB
SELECT VERSION() ==> applicable sur PostrgreSQL
SELECT * FROM V$VERSION ==> applicable sur Oracle
SELECT getvariable('SYSIBM.VERSION') FROM SYSIBM.SYSDUMMY1 ==> applicable sur DB2 for Z/OS
SELECT service_level from sysibmadm.env_inst_info ==> applicable sur DB2 for LUW
bonjour,
voici ce que cela donne avec SELECT @@VERSION :
Microsoft SQL Server 2012 - 11.0.2100.60 (X64) Feb 10 2012 19:39:15 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Ok, donc on est sur SQL server
Vous pouvez utiliser le tuto ICI pour obtenir le DDL