如果我有一个列值 alpha、azera、beta、brown、charlie、cling 的表
我如何获得 azera、brown 和 cling 等值,因为 alpha 中的“al”在 azera 中首先出现“az”。我在 SQL 2005 中开始使用它。
Select top 1 columnA from TableA order by ColumnA desc
它只给了我 1 个结果,但我需要得到每个字母 AB 和 C。
先感谢您
如果我有一个列值 alpha、azera、beta、brown、charlie、cling 的表
我如何获得 azera、brown 和 cling 等值,因为 alpha 中的“al”在 azera 中首先出现“az”。我在 SQL 2005 中开始使用它。
Select top 1 columnA from TableA order by ColumnA desc
它只给了我 1 个结果,但我需要得到每个字母 AB 和 C。
先感谢您
我将推测“字母”是指“第一个字母”。您可以使用以下方法解决此问题row_number()
:
select columnA
from (select columnA,
row_number() over (partition by left(columnA, 1) order by columnA desc) as seqnum
from TableA
) t
where seqnum = 1
order by columnA
你的问题有点不清楚,但我假设你想要每个起始字母的最大(按字母顺序排序)值。也就是说,如果它是一个字典,您想要 的最后一个条目a
, 的最后一个条目b
,依此类推。如果是这样,请尝试:
SELECT MAX(myCol)
FROM myTable
GROUP BY LEFT(myCol,1)
我假设您想按第一个字母进行分区并为每个字母获取一个单词。
您可以使用CTE
withRow_Number
函数:
WITH cte
AS (SELECT ColumnA,
rn=Row_number()
OVER(
partition BY Substring(ColumnA, 1, 1)
ORDER BY ColumnA DESC)
FROM TableA)
SELECT *
FROM cte
WHERE rn = 1
结果:
azera
brown
cling