2016-10-03 59 views
2

我有这个表:如何根据列的第一个字符创建组计数的报告?

CREATE TABLE [dbo].[Phrase] (
    [PhraseId]  UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [English]  NVARCHAR (MAX) NOT NULL, 
    [Romaji]  NVARCHAR (MAX) NULL, 
    [EnglishAscii] AS    (ascii([English])) PERSISTED, 
    PRIMARY KEY CLUSTERED ([PhraseId] ASC) 
); 

我想什么做的是得到一份报告,看起来是这样的:

A 25 
B 35 
C 10 
D 99 
... 
Y 3 

所有字符串在英文列具有第一字符是大写字母。

有人可以给我一些提示,我该如何做这种报告?

回答

2

使用LEFT字符串函数

Select Left([English],1), Count(1) 
From Yourtable 
Group by Left([English],1) 

,或者您可以使用SUBSTRING字符串函数

Select Substring([English],1,1), Count(1) 
From Yourtable 
Group by Substring([English],1,1) 
1

使用UPPER关键字,以使列[英语]的第一个字符为大写如果不是。

SELECT UPPER(Left([English],1)) Col, 
     Count(1) CNT 
FROM Yourtable 
GROUP BY Left([English],1) 
+0

也使用'GORUP BY'中的'UPPER(Left([English],1))';'。 –

1

有一个简单地返回第一个字符的派生表。 GROUP BY它的结果:

select letter, count(*) 
from 
(
    select substring([English], 1, 1) as letter 
    from [dbo].[Phrase] 
) dt 
group by letter 

这种方式,你只需要编写一次substring表达。易于写入,没有错误,更容易和更安全地维护/更新。

相关问题