Nous avons une facture, un détail de facture et une table de commande et les tables sont liées par les lignes détail de la facture parce que les détails de la facture sont regroupés par date de livraison. numéros de commande.Inclure sous-select seulement s'il y a un résultat avec tsql
Maintenant, je voudrais construire une vue qui afficherait le numéro de commande s'il n'y a qu'un seul ordre impliqué dans la facture en utilisant un sous-type quelconque.
je suis venu avec celui-ci, mais il génère toujours une erreur signalant que le retour de sous-requête plus d'un résultat
SELECT Invoice.Id, Invoice.TotalAmount,
(SELECT DISTINCT OrderId FROM InvoiceDetail
WHERE InvoiceDetail.InvoiceId = Invoice.Id
GROUP BY OrderId HAVING COUNT(DISTICT OrderId) = 1) AS OrderId
FROM Invoice
Toutes les idées pour que cela fonctionne?
Mettre l'OrderId dans un agrégat travaillé parce que le orderid peut être omis dans la clause de groupement. L'utilisation d'une jointure externe gauche l'a fait inclure toutes les factures avec une valeur nulle pour la commande pour facturée avec plusieurs commandes. – jhoefnagels