SQL Server - 计算有多少名称有'A',多少名有'E'

时间:2015-12-29 21:21:14

标签: sql sql-server

我的SQL查询有问题。

我在Name的{​​{1}}栏中有名字,例如:

Table_Name

我想知道有多少名字包含字母'Mila', 'Adrianna' 'Emma', 'Edward', 'Adam', 'Piter' ,有多少名字包含字母'A'

输出应为:

'E'

我试着这样做:

letter_A ( 5 )| letter_E (3)

我的查询仅显示“A”或“E”是否在名称中:/

有人可以帮忙吗? :)

3 个答案:

答案 0 :(得分:1)

您可以使用条件聚合:

select sum(case when Nazwisko like '%A%' then 1 else 0 end) as A_cnt,
       sum(case when Nazwisko like '%E%' then 1 else 0 end) as E_cnt       
from table_name
where Nazwisko like '%A%' or Nazwisko like '%E%';

答案 1 :(得分:0)

如果您只需要计数,则只需要汇总。

select 
 sum(case when charindex('a',name) <> 0 then 1 else 0 end) as a_count
,sum(case when charindex('e',name) <> 0 then 1 else 0 end) as e_count
from table_name

答案 2 :(得分:0)

;WITH CTE
     AS (SELECT NAME
         FROM   (VALUES ('MILA'),
                        ('ADRIANNA'),
                        ('EMMA'),
                        ('EDWARD'),
                        ('ADAM'),
                        ('PITER'))V(NAME)),
     CTE_NAME
     AS (SELECT COUNT(NAME_A) NAME_A,
                COUNT(NAME_E) NAME_E
         FROM  (SELECT CASE
                         WHEN NAME LIKE '%A%' THEN NAME
                       END NAME_A,
                       CASE
                         WHEN NAME LIKE '%E%' THEN NAME
                       END NAME_E
                FROM   CTE
                GROUP  BY NAME)A)
SELECT *
FROM   CTE_NAME