0

如果我有一个列值 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。

先感谢您

4

3 回答 3

1

我将推测“字母”是指“第一个字母”。您可以使用以下方法解决此问题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
于 2013-01-23T16:47:13.310 回答
1

你的问题有点不清楚,但我假设你想要每个起始字母的最大(按字母顺序排序)值。也就是说,如果它是一个字典,您想要 的最后一个条目a, 的最后一个条目b,依此类推。如果是这样,请尝试:

SELECT MAX(myCol)
FROM myTable
GROUP BY LEFT(myCol,1)

SQL小提琴

于 2013-01-23T16:47:47.160 回答
0

我假设您想按第一个字母进行分区并为每个字母获取一个单词。

您可以使用CTEwithRow_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       
于 2013-01-23T16:49:07.277 回答