J'écris une procédure stockée de rapport. Je souhaite obtenir le nombre d'ordres d'achat non-acquittés et non-facturés, avec la possibilité de filtrer (facultativement) sur CustomerID
. Ce que j'ai ci-dessous fonctionne comme prévu, mais je crains que a) il est lent et b) il y a une duplication dans la partie CustomerID
de la clause WHERE
.Reporting Procédure stockée - Comment éviter la duplication?
Comment écrivez-vous ce proc stocké, Stack Overflow?
SELECT
(SELECT COUNT(*)
FROM PurchaseOrder
WHERE AcknowledgmentStatus <> 'Complete'
AND (@CustID = 0 OR CustomerID = @CustID)
) AS NonAckd,
(SELECT COUNT(*)
FROM PurchaseOrder
WHERE InvoiceStatus <> 'Complete'
AND (@CustID = 0 OR CustomerID = @CustID)
) AS NonInvoiced
C'est exactement le genre de chose que je cherchais! Je ne peux pas croire que je n'ai jamais vu cette structure "CASE WHEN". –