2012-06-19 5 views
1

J'ai ce tableau [Table 1]MySQL Requête qui va regrouper les enregistrements

cid | arrivé | date_arrived

Le [champ est arrivé peut avoir une valeur de [T] ou [F], la valeur est [F] la date champ arrivé est NULL

1 enregistrements ne peuvent apparaître que jusqu'à un maximum de 2 (1 record pour arriver = T et un autre record pour arriver = F) Mais il y a aussi des dossiers qui peuvent apparaître qu'une seule fois

1 | T | 2012-02-01 
2 | F | [Null] 
1 | F | [Null] 
3 | T | 2012-03-05 

je besoin d'une requête qui montrera quelque chose comme ça

cid | arrived | not_arrived 
1  Yes   Yes 
2  No   Yes 
3  Yes   No 

Répondre

2

cela fonctionne:

SELECT 
    cid, 
    SUM(arrived = 'T') > 0 as arrived, 
    SUM(arrived = 'F') > 0 as not_arrived 
FROM [Table 1] 
GROUP BY cid; 

Vous pouvez l'essayer ici: http://sqlfiddle.com/#!2/2b5a7/1/0

0

essayer

select cid, 
    case when find_in_set('T', group_concat(arrived)) > 0 then 'yes' else 'no' end as arrived, 
    case when find_in_set('F', group_concat(arrived)) > 0 then 'yes' else 'no' end as not_arrived 
from table1 
group by cid 
Questions connexes