2016-04-06 4 views
0

私はランク付けしたい結果セットを持っています:SQL照会をランク付けする方法

何を分割するのか分かりません。

問合せ:

SELECT DISTINCT 
    TFormSectionID AS FormSectionID, 
    TFSSortOrder AS SectionSortOrder, 
    TSectionItemID AS SectionItemID, TrendType 
FROM    
    Report.TrendData 
WHERE   
    (ProgramID = 1) 
    AND (TrendType > 0) 
    AND tformid = 34 
    AND TFormSectionID = 12 

結果:

FormSectionID SectionSortOrder SectionItemID TrendType 
    12     7     90   1 
    12     7     91   1 
    12     7     154   1 
    12     7     528   1 
    12     9     154   1 
    12     9     528   1 

私は2位にランクされるセクションのソート順9と1

+0

セクション区切りで区切る –

+1

あなたが望む結果が得られる理由は何ですか? –

答えて

1
としてランク付けされるセクションのソート順7で結果をしたいです

DENSE_RANKを使いたいと思うようです:

SELECT DISTINCT TFormSectionID AS FormSectionID, 
     TFSSortOrder AS SectionSortOrder, 
     TSectionItemID AS SectionItemID, 
     TrendType, 
     DENSE_RANK() OVER (ORDER BY SectionSortOrder) AS rn  
FROM Report.TrendData 
WHERE (ProgramID = 1) AND (TrendType > 0) AND 
     tformid = 34 and TFormSectionID = 12 
+1

ビットを精巧にする:window関数は*分割*を必要としません。それがなければ、単に結果セット全体をパーティションとして使用します。 –

関連する問題