2012-05-02 14 views
2
SELECT top 5 
day_description, 
count(numberofdays) as number 

FROM mytable 

where department = 'departmentname' 

group by day_description 

私の選択は、このバックのようなものをもたらします:テーブルに番号IDを追加

day description   number   
holiday      32    
working day     212    
training day    5     
meeting day     26    
admin day     66 

は、それがいずれかのasigns 1-5新しい列を追加する方法は、あります1が最高値であります5行が最も低い値の行です。そして、次のようになります。

day description   number   top5ID 
holiday      32    3 
working day     212    1 
training day    5    5 
meeting day     26    4 
admin day     66    2 
+0

どのバージョンSQL Serverのあなたは使用していますか? – Arion

+0

あなたの目標は何ですか?それはどの列がより高いか知っていますか? –

+0

SSRS BIDSでこれを使用してbarchartを作成していますが、上位5位に応じて各バーの色を指定できます。 – JsonStatham

答えて

5

たぶん、このような何か:

;WITH CTE 
AS 
(
    SELECT top 5 
     day_description, 
     count(numberofdays) as number 
    FROM mytable 
    where department = 'departmentname' 
    group by day_description 
) 
SELECT 
    ROW_NUMBER() OVER(ORDER BY CTE.number DESC) AS Top5ID, 
    CTE.* 
FROM 
    CTE 

またはCTEなし:だから

SELECT 
    ROW_NUMBER() OVER(ORDER BY t.number DESC) AS Top5ID, 
    t.* 
FROM 
    (
     SELECT top 5 
     day_description, 
     count(numberofdays) as number 
     FROM mytable 
     where department = 'departmentname' 
     group by day_description 
    ) AS t 
+2

これは動作しますが、最高値を1ではなく5として表します。 – JsonStatham

+0

それは残念です。私は答えを更新しました。再度テストしてください:P – Arion

1

、あなたがそれを使用することができます。

SELECT TOP 5 day_description, COUNT(numberofdays) AS number, 
ROW_NUMBER() OVER(ORDER BY COUNT(numberofdays) DESC) AS Top5ID 
FROM mytable 
WHERE department = 'departmentname' 
GROUP BY day_description 
ORDER BY COUNT(numberofdays) DESC 
関連する問題