2017-08-30 2 views
0

Je rencontre des problèmes pour trouver comment totaliser les colonnes 'AS' dans mon instruction select.Meilleure façon de créer une instruction de sélection MySQL/SQL qui totalise (compte les colonnes 'AS')?

question par exemple:

Select *, 

count(case when column1 = 'yes' then (value +1) end) AS Column1Count, 
count(case when column2 = 'yes' then (value +1) end) AS Column2Count, 
(Column1Count + Column2Count) AS Column1and2TOTAL 

From mytable 

Le ci-dessus ne semble pas fonctionner, à moins que je crée un compte (cas) qui comprend précédent « comme » colonnes critères initiaux.

Existe-t-il une façon plus simple de faire cela? Certaines de mes déclarations deviennent assez (et apparemment inutilement) complexes.

+0

Malheureusement, mySQL n'a pas l'équivalent TSQL de 'cross apply' qui rendrait cela facile. À court de faire le 'count's comme une sous-requête, se joindre à elle et le résumer (ce qui frapperait la table deux fois, ainsi que la réplique de n'importe quelle logique, donc, inefficace peut-être) je pense que le moyen le plus rapide réplique le 'cas' dans votre' somme'. Laissant cela comme un commentaire car j'espère que je me trompe – LordBaconPants

Répondre

1

Essayez d'éditer votre requête comme suit:

Select Column1Count, 
     Column2Count, 
     (Column1Count + Column2Count) AS Column1and2TOTAL 
From (
     select count(case when column1 = 'yes' then (value +1) end) AS Column1Count, 
       count(case when column2 = 'yes' then (value +1) end) AS Column2Count 
     from mytable) as subquery 

Cela fonctionne.