Я пишу хранимую процедуру отчетности. Я хочу получить количество неподтвержденных и неоплаченных заказов на покупку с возможностью (опционально) фильтрации на CustomerID
.
То, что у меня есть ниже, работает, как и ожидалось, но я волнуюсь, что а) это медленно и б) есть дублирование в CustomerID
части предложения WHERE
.
Как бы вы написали этот сохраненный процесс, 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