J'ai recherché et trouvé des questions/réponses comme mon problème ici, mais rien que je puisse trouver exactement correspond.SQL - GROUP BY & HAVING COUNT numéro
SELECTING with multiple WHERE conditions on same column --- Ce lien est TRÈS proche mais ne fonctionne toujours pas pour mon problème.
Problème: J'ai une table qui abrite les méthodes de paiement et le statut de paiement (état vierge est OK)
SEL_PRO_PMTMETHOD_PK SEL_PROFILE_DETAIL_FK PMT_TYPE PMT_STATUS
43827 342997 EFT G
43828 342997 EFT P
43829 342997 RCC
43826 342997 EFT
43776 342922 EFT
43777 342922 EFT G
43778 342922 EFT P
Je dois développer la production unique en SEL_PROFILE_DETAIL_FK selon qu'il a que les entrées TEF, SEULEMENT RCC entrées, ou les deux entrées EFT et RCC.
j'ai compris les choses faciles pour seulement EFT et SEULEMENT RCC
Mais je dois être en mesure de dire s'il y a les deux entrées EFT et RCC dans le groupe FK.
Mon code à ce jour:
SELECT pmt_type
FROM sel_pro_pmtmethod
WHERE sel_profile_detail_fk = '342997'
AND pmt_type IN ('EFT', 'RCC')
GROUP BY pmt_type
HAVING COUNT(distinct pmt_type) >= 1
Ce code est de retour en arrière pour les deux pmt_type ensembles de données ci-dessus. Peu importe si elle a à la fois EFT et RCC, ou seulement l'EFT.
J'ai changé la clause HAVING COUNT être « = 2 », mais qui ne retourne rien parce que le nombre de CCOS = 1 et les TEF = 3.
Mais ce que j'ai besoin est pour ce WHERE/GROUP BY/Avoir le scénario vrai est s'il y a une entrée EFT ET RCC dans le groupement. Si un est manquant alors il échoue.
'PRESENTANT COUNT (distinct pmt_type) = 2' à donner les résultats désirés car DISTINCT ne comptera qu'une occurrence de chaque valeur, de sorte qu'il ne comptera qu'une seule fois «EFT» et «RCC» une fois.Oh et 'GROUP BY SEL_PROFILE_DETAIL_FK' ne sont pas' pmt_type' – Matt
On dirait que vous avez été fermé en utilisant HAVING COUNT = 2, cette partie que vous pouvez changer en une simple requête, mais seulement 2 colonnes SEL_PROFILE_DETAIL_FK et PMT_TYPE. Regrouper seulement par SEL_PROFILE_DETAIL_FK mais dans où clause mettre pmt_type IN ('EFT', 'RCC'). Non Avoir est requis. Utilisez-le comme sous-requête et joignez/joignez-vous à n'importe quelle requête avec ses SEL_PROFILE_DETAIL_FK – Girish
EFT et RCC sont-ils les ** seuls ** types de paiement? S'il peut y avoir plus de deux types de paiement, et que vous êtes uniquement intéressé par ces deux types, vous pouvez modifier les deux réponses fournies (qui sont correctes s'il n'y a que deux types de paiement) - la clause HAVING peut être modifiée comme 'having count (cas où pmt_type = 'EFT' puis 'x' end)> 0 et count (cas où pmt_type = 'RCC' puis 'x' fin)> 0'. – mathguy