我有这张桌子:
CREATE TABLE [dbo].[Phrase] (
[PhraseId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
[English] NVARCHAR (250) NOT NULL,
[Kanji] NVARCHAR (MAX) NULL,
[KanjiUnicode] AS (unicode([Kanji])) PERSISTED,
PRIMARY KEY CLUSTERED ([PhraseId] ASC)
);
KanjiUnicode列的值介于20,000和40,000之间
有没有办法可以对此表中的行进行分组,这样我就可以看到有多少行的KanjiUnicode值为
20000 - 20099
20100 - 20199
20200 - 20299
etc
总共40个小组
我需要做的是尝试获取适合这些组的行数。我从未见过任何可以执行此操作的查询SQL,并且有兴趣听听是否有人可以想出一个方法来获取此报告
答案 0 :(得分:0)
编辑:使用子查询来派生范围,并在外部查询中进行分组。可能有更优雅的方式这样做,但这是我现在可以想到的。
select range,count(*) as cnt from
(
select
case
when KanjiUnicode between 20000 and 20099 then '20000 - 20099'
when KanjiUnicode between 20100 and 20199 then '20100 - 20199'
-- and so on
end as range
from [dbo].[Phrase] t
) t1
group by range
答案 1 :(得分:0)
这对你有用吗?
string1[::12]
答案 2 :(得分:0)
SELECT SUM(CASE
WHEN [KanjiUnicode] BETWEEN 20000
AND 20099
THEN 1
ELSE 0
END) AS [20000 - 20099]
,SUM(CASE
WHEN [KanjiUnicode] BETWEEN 20100
AND 20199
THEN 1
ELSE 0
END) AS [20100 - 20199]
,SUM(CASE
WHEN [KanjiUnicode] BETWEEN 20200
AND 20299
THEN 1
ELSE 0
END) AS [20200 - 20299]
FROM [dbo].[Phrase]
OR
SELECT LEFT([KanjiUnicode], 3) + '00-99' AS KanjiUnicodeRange
,COUNT(*) AS RecordCount
FROM [dbo].[Phrase]
GROUP BY LEFT([KanjiUnicode], 3)