如何将两种不同的拼写分组为一种

时间:2016-03-29 14:54:32

标签: sql aggregate-functions

我正在查看运输数据的行,我希望能够操作“优步池”的条目数据。和UberPool'作为相同的过境方式。

我可以做什么,以便我的函数将两个不同拼写的所有表条目聚合到输出表中的一行?

2 个答案:

答案 0 :(得分:1)

正如@jpw所说,这取决于您的数据,但从它的外观来看,您可以使用CASE EXPRESSION子句中的GROUP BY来执行此操作:

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

您没有标记您的RDBMS,但在其中一些中您可以从组中的select中指定列别名,这样看起来会更好。

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

答案 1 :(得分:1)

评论太长了。

您可以通过执行以下操作来删除空格并标准化字符串的大小写:

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

这将检索其中一个匹配的名称作为第一列。您可能会发现这比列出一堆case更容易使用。