PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → SQL 'Je tourne en rond'
SQL 'Je tourne en rond'
Iniciado por Pierre, 03,may. 2020 15:46 - No hay respuesta
Miembro registrado
185 mensajes
Publicado el 03,mayo 2020 - 15:46
Bonjour,

Cette requête refuse de s'initialiser en disant que la sous-requête SuiviPcsGnl n'a pu être initialisée.

Si j'enlève complètement la partie SuiviArticleGnl, c'est bon *****
Si j'enlève le Group By de SuiviPcsCde el le SUM qui va avec, c'est aussi bon $$$$$

Les deux ensemble, impossible à initialiser

Avez-vous une idée à suggérer ?

Si vous avez besoin d'infos en plus n'hésitez pas

Merci d'avance,

Pierre

SELECT
Pieces.IDPieces AS IDPieces,
Pieces.IDArticles AS IdArticlesPcs,
Pieces.Quantité AS Qté,
SuiviPcsCde.IdPiece

FROM
Pieces
//SuiviPcsGnl Délai, Qté commandée, Qté reçue
//SuiviPcsCde
LEFT OUTER JOIN(
SELECT
L2.IDPieces AS IdPiece,
SUM(l2.Quantité) AS Quantité //$$$$$
FROM
LigneCommande L2
LEFT OUTER JOIN Bcde ON L2.IDBcde=Bcde.IDBcde
GROUP BY //$$$$$$
IDPièce//$$$$$
)AS SuiviPcsCde ON SuiviPcsCde.IdPiece=Pieces.IDPieces

//SuiviArticleGnl *****
LEFT OUTER JOIN(
SELECT
Articles.IDArticles AS IDArticlesArticles,
SuiviCde.QtéCommandée AS QtéCommandée,
suiviCde.ShortDate AS ShortDate,
suiviCde.ShortDateBcde AS ShortDateBcde,
CASE WHEN suiviCde.ShortDate>suiviCde.ShortDateBcde THEN suiviCde.ShortDate ELSE suiviCde.ShortDateBcde END AS ShortestDate,
SuiviCde.QtéRecue AS QtéReçue,
SuiviCde.DateMinPrévue AS DateMin
FROM
Articles
//SuiviCde
LEFT OUTER JOIN (
SELECT
LigneCommande.IDArticles AS IDArticlesDeCommande,
SUM(LigneCommande.Quantité) AS QtéCommandée,
MAX(LigneCommande.DatePrévue) AS ShortDate,
MAX(Bcde.LivraisonDateEstimée) AS ShortDateBcde,
SUM(SuiviIN.QtéRecue) AS QtéRecue,
MIN(CASE LigneCommande.DatePrévue WHEN '' THEN Bcde.LivraisonDateEstimée ELSE LigneCommande.DatePrévue END) AS DateMinPrévue
FROM
LigneCommande
LEFT OUTER JOIN Bcde ON Bcde.IDBcde=LigneCommande.IDBcde
//SuiviIN
LEFT OUTER JOIN(
SELECT
SUM(StockMvt.Quantité) AS QtéReçue,
StockMvt.IdLigneBcde AS IdLigneBcde
FROM
StockMvt
WHERE
IdLigneBcde<>0 AND StockMvt.Type IN (2,3)
GROUP BY
IdLigneBcde
)
AS SuiviIN ON SuiviIN.IdLigneBcde=LigneCommande.IdLigneBcde
GROUP BY
IDArticles
)
AS SuiviCde ON SuiviCde.IdArticlesDeCommande=Articles.IDArticles //AND LigneCommande.Quantité>SuiviCde.QtéRecue
)
AS SuiviArticleGnl ON SuiviArticleGnl.IdArticlesArticles=Pieces.IDArticles

WHERE
Pieces.IDDossier={parIdDossierOK}