对SQL_Latin1_General_CP1_CI_AS
这样的不区分大小写的排序规则使用不同的查询将检索第一次出现的不区分大小写的行。
但如果两种情况都存在,我想检索小写。
如果数据中只有一个案例,我想要检索那个案例。 (资本案例的独特出现应保留在结果集中的大写情况中)
表格
id | col1
----------
1 | Ab
2 | ab
3 | cd
4 | Cd
5 | Ef
查询:
SELECT DISTINCT [col1] COLLATE SQL_Latin1_General_CP1_CI_AS
FROM dbo.table
将检索:Ab, cd, Ef
但我想检索: ab, cd, Ef
是否有可以为我提供所需结果的整理?
优先考虑小写而不是第一种情况。
如果不是,我必须使用子选择。
答案 0 :(得分:0)
这样的事情应该这样做:
WITH cte As
(
SELECT
ID,
Col1,
ROW_NUMBER() OVER
(
PARTITION BY
Col1 COLLATE SQL_Latin1_General_CP1_CI_AS
ORDER BY
Col1 COLLATE SQL_Latin1_General_CP1_CS_AS DESC,
ID
) As RowNumber
FROM
dbo.Table
)
SELECT
ID,
Col1
FROM
cte
WHERE
RowNumber = 1
;
答案 1 :(得分:0)
可能是这样的
select
min(T.col1 collate SQL_Latin1_General_CP1_CS_AS)
from dbo.Table as T
group by T.col1 collate SQL_Latin1_General_CP1_CI_AS