2017-10-20 65 views
0

J'ai une table qui ressemble à ceci:Nombre basé sur les caractères gauches?

ID  Location 
1  AAA123 
1  AAA133 
1  AAA832 
1  BBB929 
1  BBB420 

Comment puis-je compter et le groupe par les 3 premiers caractères afin que le résultat ressemble à ceci:

ID  AAA_Count  BBB_count 
1  3    2 

J'ai essayé quelque chose comme ceci:

select [ID], Location, 
case when left(location, 3) = 'AAA' then count(location) end as 'AAA', 
case when left(location, 3) = 'BBB' then count(location) end as 'BBB', 
from Table 
group by [ID], left(location, 3) 

Toute aide est appréciée.

Merci.

+0

toujours spécifier la version du logiciel et le serveur que vous utilisez. – FLICKER

Répondre

2

Vous devez

select [ID], 
count(case when left(location, 3) = 'AAA' then 1 end) as [AAA], 
count(case when left(location, 3) = 'BBB' then 1 end) as [BBB] 
from Table 
group by [ID] 
0

Si vous voulez une solution à base de ligne au lieu d'une solution à base de colonne, vous pouvez utiliser:

Select ID, left(location, 3) as Chars, count(1) as Counts 
from Table group by ID, left(location, 3);