0

列の値がアルファ、アゼラ、ベータ、ブラウン、チャーリー、クリングのテーブルがある場合

alphaの「al」がazeraの最初の「az」であるため、azera、brown、clingなどの値を取得するにはどうすればよいですか.. SQL 2005でこれを使い始めました。

Select top 1 columnA from TableA order by ColumnA desc 

結果は1つしか得られませんが、アルファベットABとCごとに取得する必要があります.

前もって感謝します

4

3 に答える 3

1

あなたの質問は少し不明確ですが、各開始文字の最大値 (アルファベット順に並べ替えた場合) が必要であると想定しています。つまり、辞書の場合、 の最後のエントリa、 の最後のエントリbなどを取得します。その場合は、次を試してください。

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

SQL フィドル

于 2013-01-23T16:47:47.160 に答える
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 に答える
0

最初の文字で分割し、文字ごとに 1 つの単語を取得するとします。

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 に答える