sql-server-2008 - 按问题分组

标签 sql-server-2008

select 
        case status
            when 'AR' then 1
            when 'AV' then 2
            when 'AN' then 3
            when 'AD' then 4
            when 'AC' then 5
            when 'AY' then 6
            when 'AH' then 7
            else 8
        end 'status_order', COUNT(*)
from dn_appeal_request
group by 
        case status
            when 'AR' then 1
            when 'AV' then 2
            when 'AN' then 3
            when 'AD' then 4
            when 'AC' then 5
            when 'AY' then 6
            when 'AH' then 7
            else 8
        end 


有没有办法在不使用select中使用相同case语句的情况下进行分组?

最佳答案

您可以通过使用子查询来避免重复执行case语句。您确实需要对值进行分组。

select D.status_order, COUNT(*)
from (
        select case status
                 when 'AR' then 1
                 when 'AV' then 2
                 when 'AN' then 3
                 when 'AD' then 4
                 when 'AC' then 5
                 when 'AY' then 6
                 when 'AH' then 7
                 else 8
               end 'status_order'
        from dn_appeal_request
     ) as D
group by D.status_order

关于sql-server-2008 - 按问题分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6960718/

相关文章:

html - 在 SSRS 中呈现 HTML 链接会忽略目标属性

sql - GRANT EXECUTE 给所有存储过程

mysql - SQL Server : Want to use between clause with dates, 但日期为字符串形式 (YYYY.MM.DD)

sql - 当前在 SQL Server 中运行查询

sql - 在SQL Server中创建临时表是否需要使用#?

sql - SQL Server 2008中如何限制用户只能访问一种模式的对象?

sql - 从 SQL Server 中的 JOIN 结果中获取不同的行

SQL CHECK 约束问题

c# - 唯一列约束,异常与数据库检查?

Sql:查找答案是否存在