对于包含特定字符的行,以及正常情况,请使用group by

时间:2014-11-20 16:43:35

标签: sql-server

我有一个我想要分组的varchar字段。

除非我想将包含'.'字符的所有行合并到一个组中

起始表,"名称"中包含以下5个条目字段:

Aaa Aa
Bbb Bb
Ccc.Cc
Ddd.Dd
Eee.Ee

预期分组

Aaa Aa
Bbb Bb
HasDot

也许沿着这些方向使用某些东西?

Select "Name", count(*)
from MyTable
group by "Name"
-- group normally except for the group containing '.'

2 个答案:

答案 0 :(得分:1)

使用CASE表达式:

SELECT  CASE 
            WHEN Name LIKE '%.%' THEN 'HasDot' 
            ELSE Name 
        END Name,
        COUNT(*) N
FROM dbo.YourTable
GROUP BY CASE 
            WHEN Name LIKE '%.%' THEN 'HasDot' 
            ELSE Name 
         END;

答案 1 :(得分:0)

SELECT  DISTINCT IIF ((charindex('.',name) >0),'HasDot',name) NAME
FROM [name1]
ORDER BY NAME