2010-03-12 3 views
2

J'ai une table (pommes) contenant:faire une somme combinée de deux colonnes

cid date_am date_pm 
---------------------- 
1  1  1 
2  2  1 
3  1  3 
1  1  2 

j'ai posé une question plus tôt (mal) sur la façon dont je classer les clients dans l'ordre du nombre de ceux (1) ils avaient. La solution était (basée sur une colonne):

SELECT cid, sum(date_pm) AS No_of_ones 
FROM apples 
WHERE date_am =1 
GROUP BY cid 
ORDER BY no_of_ones DESC 

Cela fonctionne très bien pour une colonne, mais comment pourrais-je faire la même chose pour la somme des deux colonnes. ie.

SELECT cid, sum(date_pm) AS No_of_ones 
FROM apples 
WHERE date_am =1 
add to 
SELECT cid, sum(date_am) AS No_of_ones 
FROM apples 
WHERE date_pm =1 
GROUP by cid 
ORDER by no_of_ones(added) 

espère avoir réussi à faire assez clair pour vous aider -Merci

Répondre

1
select cid, sum(case when date_pm = 1 then 1 else 0 end) + sum(case when date_am = 1 then 1 else 0 end) 
from apples 
group by cid 
+0

pas intentionnellement désolé – bsandrabr

+0

@bsandrabr: Vous pouvez inverser le downvote en cliquant sur la flèche upvote si la personne a édité leur réponse après avoir lancé la liste négative. –

0
select cid, sum(addone) as total from 
    (select cid, 1 as addone 
    from apples 
    where date_pm = 1 group by cid 
    union 
    select cid, 1 as addone 
    from apples 
    where date_am = 1 group by cid) 
group by cid order by total DESC 

OU

select cid, sum(case when date_am=1 then 1 else 0 end) 
      + sum(case when date_pm=1 then 1 else 0 end) as total 
from apples 
group by CID 
order by total DESC 
+0

merci à la fois la réponse à la question que vous avez tous deux a travaillé parfaitement très merci – bsandrabr

Questions connexes