J'ai un problème de sélection avec MSSQL qui est; Je veux sélectionner tous les éléments avec ce code, j'ai répertorié tous les éléments qui ont soit Cette facture rencontre 2 condition, donc je souhaite énumérer ce deuxième élément avec invoceno.
Et tous les autres articles qui répondent à cette condition. P> p>
5 Réponses :
Changez simplement votre ou code> à un et code> dans votre où code> clause p>
Vous pouvez essayer ceci à l'aide d'une jointure intérieure comme indiqué ci-dessous.
SELECT TableA.*
FROM TableA
INNER JOIN (
SELECT TableA.*
FROM TableA
WHERE EXISTS (
SELECT 1
FROM TableB
WHERE TableA.ItemName = TableB.ItemName
AND TableA.ItemName = 'A'
)
AND EXISTS (
SELECT 1
FROM TableB
WHERE TableA.ItemName = TableB.ItemName
AND TableB.ItemGroup = 'XXX'
)
) TEMP ON TableA.InvoceNo = TEMP.InvoceNo
J'ai ajouté deux autres articles avec différents invoceno. Le résultat doit me montrer quatre articles comme suit: 1-3 (même invoiceno) et 3-4 (même factoiceno). Mais le résultat ne montre que trois articles. Parce que requête ne correspond pas à la condition de la facturation. Une facture doit contenir deux conditions.
Quelle est la sortie attendue pour votre démo dbfiddle?
Désolé pour ma réponse tardive, je suis si occupé de nos jours. J'ai essayé votre code mais cela a donné un résultat vide.
S'il vous plaît vérifier la démo.
Essayez ceci
Cette requête ne répond pas à l'état de l'équation de Invoiceno. Mon code obtient le même résultat.
Vous pouvez utiliser une instruction CASE dans votre clause où la clause plutôt que «ou», votre sortie correspondra à ce que vous avez souhaité avant. Vous pouvez vérifier ma réponse.
Désolé pour ma réponse tardive en raison de mon travail acharné. Je ne pouvais pas adapter votre requête à la mienne. Vous utilisez Créer une fonction de table, mais mes tables existent. Alors pourriez-vous s'il vous plaît séparé avec créer une pièce et sélectionnez une partie.
J'ai mis à jour ma réponse. Pourriez-vous s'il vous plaît vérifier. @mithderler
Si vous souhaitez remplir les deux conditions à la fois, utilisez et mot clé. Si vous souhaitez effectuer une seule condition sur deux, utilisez ou mot clé.
Cela ne fonctionne pas, car l'élémentUniqueno = 3 n'a pas de groupe de "XXX". Ce sont deux éléments différents.
J'ai mal compris votre question. Je vais mettre à jour la réponse dans un moment
Chers amis, je vois qu'un malentendu se produit sur la requête. Invoiceno est la partie clé de cette requête. Deux conditions se sont connectées avec invoiceno. Si les deux conditions se rencontrent dans le même invoceno, donnez-moi simplement ces articles (avec Invoiceno), sinon ne me donnez pas cet article. Je veux dire, si un article a un groupe de 'xxx', ne me le montre pas seul. Il suffit de me montrer si la même facture a un élément que Uniqueno est «3». Deux éléments doivent être dans la même facture. J'espère que je me suis rendu clair.
S'il vous plaît vérifier la réponse mise à jour
Une ligne de table (un élément) dépendante d'une autre ligne de table (en poste). Un élément doit avoir un groupe de «xxx» et d'un article tiné (une autre ligne de table) doit avoir le pointUniqueno de '3'. Ces deux articles mut ont Sami Invoiceno. Sinon, ne montrez pas que les articles. Donc, un élément dépend d'un autre article dans la même table avec Invoiceno.