首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编写此SQL Order By子句

如何编写此SQL Order By子句
EN

Stack Overflow用户
提问于 2011-11-03 23:53:19
回答 4查看 394关注 0票数 1

我有一个SQL查询,我正在尝试编写,但现在在如何编写order by子句方面遇到了一些困难。

基本上,我从中选择的表包含具有严重性值的项目。我希望选择这些项并对它们进行排序,以便Severity列的顺序是Severity 1-4,然后是0,日志日期是每一项的降序。

严重度1表示最高,4表示最低,0表示未分配的严重度,我需要显示这些项最高严重度,最早的项,最低的严重度,最新的项最后。

到目前为止我的问题是:

代码语言:javascript
运行
复制
SELECT 
        [TicketID],
        [type],
        [Product],
        [Description],
        [LoggedBy],
        [LogDate],
        [Department],
        [AssignedTo],
        [Severity],
        [Status],
        [LastUpdatedBy],
        [LastUpdatedDate]
    FROM 
        SupportTicketsTbl 
    WHERE 
        TicketID NOT IN
        (
            SELECT 
                tck.ticketID  
            FROM 
                SupportTicketsTbl tck
            JOIN
                tblTicketsInEvents tie
            ON
                tck.TicketID = tie.ticketID 
            JOIN
                tblSupportEvent ev
            ON
                tie.eventID = ev.id 
            where 
                ev.type = 1
        )
    AND
        Status <> 'Complete'

我猜最简单的方法是创建一个表变量,并按我想要的顺序选择所有不是0的项,然后将所有0项选择到我的表变量中,最后从表变量中选择所有内容,但这看起来有点混乱,所以我想知道是否有更好的解决方案?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-04 00:02:32

既然你不喜欢工会的答案,我也不确定工会是否能保证维持秩序……

代码语言:javascript
运行
复制
ORDER BY CASE WHEN severity = 0 THEN 999 ELSE Severity END, date 
票数 2
EN

Stack Overflow用户

发布于 2011-11-04 00:01:05

您可以像这样通过case语句进行排序:

代码语言:javascript
运行
复制
ORDER BY CASE Severity WHEN 0 THEN 1 ELSE 2 END, Severity
票数 1
EN

Stack Overflow用户

发布于 2011-11-03 23:57:57

首先,使用标准orderby子句选择严重级别为1-4的所有查询,然后将结果与第二个查询合并,该查询只选择严重级别为0的查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7997887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档