[英]SQL Case Sensitive Group By
I have a table which is having a column "AccountCode" and other columns. 我有一个表有一个“AccountCode”列和其他列。 There are few account codes which are same but differs being case-sensitive.
几个帐户代码相同但不同区分大小写。 Example:
例:
AccountCode OrderId
ABC O001
ABC O002
abc O003
DEF O004
I want a query to have a group by on AccountCode column and get respective count. 我希望查询在AccountCode列上有一个组,并获得相应的计数。 Expected output should be like
预期的输出应该是这样的
ABC 2
abc 1
DEF 1
I have tried using COLLATE Latin1_General_CS_AS but unable to get desired result. 我尝试过使用COLLATE Latin1_General_CS_AS但无法获得所需的结果。
Below query doesn't provide a case-sensitive output 以下查询不提供区分大小写的输出
select accountCode COLLATE Latin1_General_CS_AS, count(OrderId)
from <<TableName>>
group by accountCode
Assign the COLLATE also on the GROUP BY clause 也在GROUP BY子句上分配COLLATE
select accountCode COLLATE Latin1_General_CS_AS, count(OrderId)
from <<TableName>>
group by accountCode COLLATE Latin1_General_CS_AS
create table #a
(
AccountCode varchar(10) , OrderId varchar(10)
)
insert into #a values
('ABC','O001'),
('ABC','O002'),
('abc','O003'),
('DEF','O004')
select accountCode COLLATE Latin1_General_CS_AS, count(OrderId) from #a group by accountCode COLLATE Latin1_General_CS_AS
BEGIN TRAN CREATE TABLE #Temp(AccountCode VARCHAR(100),OrderId VARCHAR(100)) BEGIN TRAN CREATE TABLE #Temp(AccountCode VARCHAR(100),OrderId VARCHAR(100))
INSERT INTO #Temp(AccountCode ,OrderId) SELECT 'ABC','O001' UNION ALL SELECT 'ABC','O002' UNION ALL SELECT 'abc','O003' UNION ALL SELECT 'DEF','O004' INSERT INTO #Temp(AccountCode,OrderId)SELECT'ABC','O001'UNION ALL SELECT'ABC','O002'UNION ALL SELECT'abc','O003'UNION ALL SELECT'DEF','O004'
SELECT AccountCode COLLATE Latin1_General_CS_AS, COUNT(OrderId) FROM #Temp GROUP BY accountCode COLLATE Latin1_General_CS_AS SELECT AccountCode COLLATE Latin1_General_CS_AS,COUNT(OrderId)FROM #Temp GROUP BY accountCode COLLATE Latin1_General_CS_AS
ROLLBACK TRAN ROLLBACK TRAN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.