将数字id添加到表中

Jso*_*ham 2 sql t-sql sql-server sql-server-2008 reporting-services

SELECT top 5
day_description,
count(numberofdays) as number

FROM mytable

where department = 'departmentname'

group by day_description
Run Code Online (Sandbox Code Playgroud)

我的选择会带来这样的东西:

day description           number           
holiday                     32               
working day                 212              
training day                5                
meeting day                 26               
admin day                   66   
Run Code Online (Sandbox Code Playgroud)

是否有一种方法可以添加一个新列,其中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
Run Code Online (Sandbox Code Playgroud)

Ari*_*ion 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
Run Code Online (Sandbox Code Playgroud)

或者没有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
Run Code Online (Sandbox Code Playgroud)

  • 这虽然有效,但最高值为5而不是1 (2认同)