2017-09-05 1 views
0

J'ai deux champs dans la table manager_id et on_behalf_manager_id en remplissant ce formulaire, ou plutôt en insérant la table l'un de ceux-ci sera rempli et l'autre sera 0. Maintenant, je besoin du comte où les deux manager_id ou on_behalf_manager_id sont les mêmes, la structure de la table est comme ci-dessous:Sélection de comptage basé sur 1 champ ou un autre - Nombre conditionnel

Table : Feedbacks 
id manager_id  on_behalf_manager_id score created  status 
1  2    0      20  2017-08-17 1 
2  2    0      21  2017-08-18 1 
3  0    2      20  2017-08-17 1 
4  1    0      10  2017-08-17 1 
5  2    0      17  2017-08-17 1 
6  0    1      20  2017-08-17 1 
7  0    2      18  2017-08-17 1 

donc mon résultat final en mettant en œuvre le décompte doit être

manag_id   count 
1     2 
2     5 

J'ai lu beaucoup, mais n'a pas pu trouver la solution exacte. La seule solution qui me vient à l'esprit est la requête interne. Cela augmenterait mes connaissances et servirait mon but. L'aide est très appréciée.

+0

Avez-vous essayé encore une question? –

+0

sur quoi sont basées les thèses 2 et 5? –

+0

Pourquoi le gestionnaire '0' n'apparaît-il pas dans votre sortie attendue? –

Répondre

1

Je ne suis pas sûr à 100% si cela correspond à vos besoins, mais peut-être cela vous guide dans la bonne direction:

SELECT 
    CASE 
WHEN manager_id = 0 THEN 
    on_behalf_manager_id 
ELSE 
    manager_id 
END AS manag_id, 
count(
    CASE 
    WHEN manager_id = 0 THEN 
     on_behalf_manager_id 
    ELSE 
     manager_id 
    END 
) AS count 
FROM 
    feedback 
GROUP BY 
    CASE 
WHEN manager_id = 0 THEN 
    on_behalf_manager_id 
ELSE 
    manager_id 
END 
+0

parfait a fonctionné comme prévu! Merci @dns_nx –