sql - 向表中添加数字 id

标签 sql sql-server sql-server-2008 tsql reporting-services

SELECT top 5
day_description,
count(numberofdays) as number

FROM mytable

where department = 'departmentname'

group by day_description

我的选择带回了这样的东西:

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

有没有办法添加一个新列,它指定 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

最佳答案

也许是这样的:

;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

关于sql - 向表中添加数字 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10413362/

相关文章:

mysql - Mysql 中的自动索引

sql - Microsoft SQL Server Management Studio 错误地重写了我的查询

sql-server - SSIS变量评估表达式在脚本任务中花费的时间

sql - 如何在 MSSQL 2008 字符串连接中替换表变量

Sql Server 2008 交叉表查询

sql-server - SSRS BIDS 2008 R2 饼图数据标签重叠

MySQL根据第二列的内容对总和进行加减

sql - 如何更改列以接受某些特定格式的值?

sql-server - SQL Datediff 以秒为单位,带小数位

SQL Server newID - 它是如何创建的?