Bonjour,
J'ai un petit problème syntaxique avec la requête suivante :
En effet SQL Server 2000 m'indique "T_RUPTURE.REFERENCE does not match with a table name or alias name used in the query".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 UPDATE T_RUPTURE SET PERTE_CA = ISNULL(CA, 0), PERTE_MARGE = ISNULL(MARGE, 0), DD_CALC = GETDATE() FROM (SELECT SUM(CA_HT) AS CA, SUM(CA_HT - ACHAT_HT) AS MARGE FROM T_CA_HT WHERE T_CA_HT.REFERENCE = T_RUPTURE.REFERENCE AND T_CA_HT.LIEU = T_RUPTURE.LIEU AND DATE_VENTE >= DATEADD(day, -365, DATE_DEBUT_RUPTURE) AND DATE_VENTE < DATEADD(day, -365, ISNULL(DATE_FIN_RUPTURE, GETDATE())) ca WHERE (PERTE_CA IS NULL OR DATE_FIN_RUPTURE IS NULL OR DATE_FIN_RUPTURE >= DATEADD(day, -2, GETDATE()))
Il me faudrait donc écrire plus justement :
Mais pour le coup je groupe mes ventes par date, ce qui me gêne, d'autant que je ramène pour le coup plus d'informations que ce dont j'ai réellement besoin. Y a-t-il un autre moyen ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 UPDATE T_RUPTURE SET PERTE_CA = ISNULL(CA, 0), PERTE_MARGE = ISNULL(MARGE, 0), DD_CALC = GETDATE() FROM (SELECT REFERENCE, LIEU, DATE_VENTE, SUM(CA_HT) AS CA, SUM(CA_HT - ACHAT_HT) AS MARGE FROM T_CA_HT WHERE T_CA_HT.REFERENCE = T_RUPTURE.REFERENCE AND T_CA_HT.LIEU = T_RUPTURE.LIEU GROUP BY REFERENCE, LIEU, DATE_VENTE) ca WHERE (PERTE_CA IS NULL OR DATE_FIN_RUPTURE IS NULL OR DATE_FIN_RUPTURE >= DATEADD(day, -2, GETDATE())) AND ca.LIEU = T_RUPTURE.LIEU AND ca.REFERENCE = T_RUPTURE.REFERENCE AND DATE_VENTE >= DATEADD(day, -365, DATE_DEBUT_RUPTURE) AND DATE_VENTE < DATEADD(day, -365, ISNULL(DATE_FIN_RUPTURE, GETDATE())
Structures :
T_RUPTURE :
REFERENCE
LIEU
DATE_DEBUT_RUPTURE
DATE_FIN_RUPTURE
PERTE_CA
PERTE_MARGE
T_CA_HT :
LIEU
REFERENCE
DATE_VENTE
QTE_VENDUE
CA_HT
ACHAT_HT
VENTE_HT
Partager