Je suis un peu perdu dans une requete qui, je pense doit être plus simple
que ce que j'ai fait.
J'ai (sommairement) une table commande avec comme colonnes
marchandise
qte
date arrivage
Je souhaiterais obtenir pour chaque marchandise la plus petite date
d'arrivage supérieure à la date du jour et dont le solde soit positif
(sans passer par des tables temporaires et des boucles comme je le fais pour
l'instant...)
Avoir comme résultat
INSERT INTO commande VALUES (1, 10, '01/02/2008', 0) INSERT INTO commande VALUES (2, 20, '01/02/2008', 10) INSERT INTO commande VALUES (1, 15, '01/03/2008', 15) INSERT INTO commande VALUES (1, 10, '01/04/2008', 10) INSERT INTO commande VALUES (2, 10, '01/03/2008', 10)
SELECT C1.* FROM commande C1 INNER JOIN (SELECT MAR_ID, MIN(DATE_ARRIVAGE) AS PREMIER_ARRIVAGE FROM commande WHERE DATE_ARRIVAGE > CURRENT_TIMESTAMP AND SOLDE_CMD > 0 GROUP BY MAR_ID) C2 ON C1.MAR_ID = C2.MAR_ID AND C1.DATE_ARRIVAGE = C2.PREMIER_ARRIVAGE
Je suis un peu perdu dans une requete qui, je pense doit être plus simple que ce que j'ai fait. J'ai (sommairement) une table commande avec comme colonnes marchandise qte date arrivage
Je souhaiterais obtenir pour chaque marchandise la plus petite date d'arrivage supérieure à la date du jour et dont le solde soit positif (sans passer par des tables temporaires et des boucles comme je le fais pour l'instant...) Avoir comme résultat
MAR_ID QTE DATE_ARRIVAGE SOLDE_CMD
1 15 01/03/2008 15 2 20 01/02/2008 10
Merci
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
INSERT INTO commande VALUES (1, 10, '01/02/2008', 0)
INSERT INTO commande VALUES (2, 20, '01/02/2008', 10)
INSERT INTO commande VALUES (1, 15, '01/03/2008', 15)
INSERT INTO commande VALUES (1, 10, '01/04/2008', 10)
INSERT INTO commande VALUES (2, 10, '01/03/2008', 10)
SELECT C1.*
FROM commande C1
INNER JOIN (SELECT MAR_ID, MIN(DATE_ARRIVAGE) AS PREMIER_ARRIVAGE
FROM commande
WHERE DATE_ARRIVAGE > CURRENT_TIMESTAMP
AND SOLDE_CMD > 0
GROUP BY MAR_ID) C2
ON C1.MAR_ID = C2.MAR_ID
AND C1.DATE_ARRIVAGE = C2.PREMIER_ARRIVAGE
Je suis un peu perdu dans une requete qui, je pense doit être plus simple
que ce que j'ai fait.
J'ai (sommairement) une table commande avec comme colonnes
marchandise
qte
date arrivage
Je souhaiterais obtenir pour chaque marchandise la plus petite date
d'arrivage supérieure à la date du jour et dont le solde soit positif
(sans passer par des tables temporaires et des boucles comme je le fais pour
l'instant...)
Avoir comme résultat
MAR_ID QTE DATE_ARRIVAGE SOLDE_CMD
1 15 01/03/2008 15
2 20 01/02/2008 10
Merci
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
INSERT INTO commande VALUES (1, 10, '01/02/2008', 0) INSERT INTO commande VALUES (2, 20, '01/02/2008', 10) INSERT INTO commande VALUES (1, 15, '01/03/2008', 15) INSERT INTO commande VALUES (1, 10, '01/04/2008', 10) INSERT INTO commande VALUES (2, 10, '01/03/2008', 10)
SELECT C1.* FROM commande C1 INNER JOIN (SELECT MAR_ID, MIN(DATE_ARRIVAGE) AS PREMIER_ARRIVAGE FROM commande WHERE DATE_ARRIVAGE > CURRENT_TIMESTAMP AND SOLDE_CMD > 0 GROUP BY MAR_ID) C2 ON C1.MAR_ID = C2.MAR_ID AND C1.DATE_ARRIVAGE = C2.PREMIER_ARRIVAGE
Je suis un peu perdu dans une requete qui, je pense doit être plus simple que ce que j'ai fait. J'ai (sommairement) une table commande avec comme colonnes marchandise qte date arrivage
Je souhaiterais obtenir pour chaque marchandise la plus petite date d'arrivage supérieure à la date du jour et dont le solde soit positif (sans passer par des tables temporaires et des boucles comme je le fais pour l'instant...) Avoir comme résultat
MAR_ID QTE DATE_ARRIVAGE SOLDE_CMD
1 15 01/03/2008 15 2 20 01/02/2008 10
Merci
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
INSERT INTO commande VALUES (1, 10, '01/02/2008', 0) INSERT INTO commande VALUES (2, 20, '01/02/2008', 10) INSERT INTO commande VALUES (1, 15, '01/03/2008', 15) INSERT INTO commande VALUES (1, 10, '01/04/2008', 10) INSERT INTO commande VALUES (2, 10, '01/03/2008', 10)
SELECT C1.* FROM commande C1 INNER JOIN (SELECT MAR_ID, MIN(DATE_ARRIVAGE) AS PREMIER_ARRIVAGE FROM commande WHERE DATE_ARRIVAGE > CURRENT_TIMESTAMP AND SOLDE_CMD > 0 GROUP BY MAR_ID) C2 ON C1.MAR_ID = C2.MAR_ID AND C1.DATE_ARRIVAGE = C2.PREMIER_ARRIVAGE
jerome a écrit : > Bonjour, > > Je suis un peu perdu dans une requete qui, je pense doit être plus
simple
> que ce que j'ai fait. > J'ai (sommairement) une table commande avec comme colonnes > marchandise > qte > date arrivage > > Quelque chose du genre > MAR_ID QTE DATE_ARRIVAGE SOLDE_CMD > 1 10 01/02/2008 0 > (cas commande annulée) > 2 20 01/02/2008 10 > 1 15 01/03/2008 15 > 1 10 01/04/2008 10 > 2 10 01/03/2008 10 > > Je souhaiterais obtenir pour chaque marchandise la plus petite date > d'arrivage supérieure à la date du jour et dont le solde soit positif > (sans passer par des tables temporaires et des boucles comme je le fais
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
Merci beaucoup
"Fred BROUARD" <brouardf@club-internet.fr> wrote in message
news:%23AkZ5b%23RIHA.6060@TK2MSFTNGP05.phx.gbl...
INSERT INTO commande VALUES (1, 10, '01/02/2008', 0)
INSERT INTO commande VALUES (2, 20, '01/02/2008', 10)
INSERT INTO commande VALUES (1, 15, '01/03/2008', 15)
INSERT INTO commande VALUES (1, 10, '01/04/2008', 10)
INSERT INTO commande VALUES (2, 10, '01/03/2008', 10)
SELECT C1.*
FROM commande C1
INNER JOIN (SELECT MAR_ID, MIN(DATE_ARRIVAGE) AS PREMIER_ARRIVAGE
FROM commande
WHERE DATE_ARRIVAGE > CURRENT_TIMESTAMP
AND SOLDE_CMD > 0
GROUP BY MAR_ID) C2
ON C1.MAR_ID = C2.MAR_ID
AND C1.DATE_ARRIVAGE = C2.PREMIER_ARRIVAGE
jerome a écrit :
> Bonjour,
>
> Je suis un peu perdu dans une requete qui, je pense doit être plus
simple
> que ce que j'ai fait.
> J'ai (sommairement) une table commande avec comme colonnes
> marchandise
> qte
> date arrivage
>
> Quelque chose du genre
> MAR_ID QTE DATE_ARRIVAGE SOLDE_CMD
> 1 10 01/02/2008 0
> (cas commande annulée)
> 2 20 01/02/2008 10
> 1 15 01/03/2008 15
> 1 10 01/04/2008 10
> 2 10 01/03/2008 10
>
> Je souhaiterais obtenir pour chaque marchandise la plus petite date
> d'arrivage supérieure à la date du jour et dont le solde soit positif
> (sans passer par des tables temporaires et des boucles comme je le fais
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
INSERT INTO commande VALUES (1, 10, '01/02/2008', 0) INSERT INTO commande VALUES (2, 20, '01/02/2008', 10) INSERT INTO commande VALUES (1, 15, '01/03/2008', 15) INSERT INTO commande VALUES (1, 10, '01/04/2008', 10) INSERT INTO commande VALUES (2, 10, '01/03/2008', 10)
SELECT C1.* FROM commande C1 INNER JOIN (SELECT MAR_ID, MIN(DATE_ARRIVAGE) AS PREMIER_ARRIVAGE FROM commande WHERE DATE_ARRIVAGE > CURRENT_TIMESTAMP AND SOLDE_CMD > 0 GROUP BY MAR_ID) C2 ON C1.MAR_ID = C2.MAR_ID AND C1.DATE_ARRIVAGE = C2.PREMIER_ARRIVAGE
jerome a écrit : > Bonjour, > > Je suis un peu perdu dans une requete qui, je pense doit être plus
simple
> que ce que j'ai fait. > J'ai (sommairement) une table commande avec comme colonnes > marchandise > qte > date arrivage > > Quelque chose du genre > MAR_ID QTE DATE_ARRIVAGE SOLDE_CMD > 1 10 01/02/2008 0 > (cas commande annulée) > 2 20 01/02/2008 10 > 1 15 01/03/2008 15 > 1 10 01/04/2008 10 > 2 10 01/03/2008 10 > > Je souhaiterais obtenir pour chaque marchandise la plus petite date > d'arrivage supérieure à la date du jour et dont le solde soit positif > (sans passer par des tables temporaires et des boucles comme je le fais
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************