2016-03-29 36 views
0

olarak gruplandırma Taşımacılık veri satırlarına bakıyorum ve 'Uber Pool' ve 'UberPool' girişleri için verileri aynı geçiş modu olarak kullanabilmeyi istiyorum.İki farklı yazımı bir

İşlevlerimin, iki farklı yazımın tüm tablo girişlerini çıktı tablosunda bir satırda toplaması için neler yapabilirim?

+0

Karmaşık ve bazen dile özgü bir sorun. Üst/alt/soundex'i deneyin. – jarlh

+2

Farklı yazımlar önceden biliniyorsa, farklı değerleri aynı şekilde ele almak için vaka ifadeleri kullanabilir veya çok farklı değerler varsa bir eşleme tablosu oluşturabilirsiniz. Dinamik olmak için ihtiyacınız varsa sorun çok daha fazla olur. – jpw

+0

İki girişin eşit kabul edildiği kuralı tanımlayın. 'UberPool' = 'uBERpOOL' mu? 'Uber Havuzu' = 'U-b-e-r * P-o-o-l' mi? 'UberPool' = 'OoberPool' mu? –

cevap

1

@jpw söylediği gibi, bu verilere bağlıdır, ancak bunu görünüyor size GROUP BY fıkrada CASE EXPRESSION kullanarak bunu yapabilirsiniz: Eğer RDBMS'yi etiketlemediyseniz

SELECT CASE t.name = 'Uber Pool' then 'UberPool' else t.name end as name,count(*) 
FROM YourTable t 
GROUP BY CASE t.name = 'Uber Pool' then 'UberPool' else t.name end 

ama bazı Bunlardan daha iyi görünecek olan gruptaki seçimlerden sütun takma adını belirtebilirsiniz.

SELECT CASE t.name = 'Uber Pool' then 'UberPool' else t.name end as new_name,count(*) 
FROM YourTable t 
GROUP BY new_name 
1

Bu yorum uzun bir süre için verilir.

Böyle bir şey yaparak, boşlukları kaldırın ve dize durumda standartlaştırabilirsiniz:

select min(t.name) as name, . . . 
from t 
group by lower(replace(t.name, ' ', '')) 

Bu ilk sütun olarak eşleşen isimlerinden biri olarak alır. Bu çalışmayı daha kolay bulabilirsiniz, bir grup case s listelemekten daha iyi.

İlgili konular