2014-11-20 36 views
0

我有一個varchar字段,我想將其組合在一起。對包含特定字符的行使用group by,以及通常

除了我想包含'.'字符的所有行凝聚成一個組

開始表,具有下列5項中的「名稱」字段:

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

預計分組

Aaa Aa 
Bbb Bb 
HasDot 

也許使用s沿着這些路線的東西?

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

回答

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; 
0
SELECT DISTINCT IIF ((charindex('.',name) >0),'HasDot',name) NAME 
FROM [name1] 
ORDER BY NAME