我有一个SQL查询,我正在尝试编写,但现在在如何编写order by子句方面遇到了一些困难。
基本上,我从中选择的表包含具有严重性值的项目。我希望选择这些项并对它们进行排序,以便Severity列的顺序是Severity 1-4,然后是0,日志日期是每一项的降序。
严重度1表示最高,4表示最低,0表示未分配的严重度,我需要显示这些项最高严重度,最早的项,最低的严重度,最新的项最后。
到目前为止我的问题是:
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项选择到我的表变量中,最后从表变量中选择所有内容,但这看起来有点混乱,所以我想知道是否有更好的解决方案?
谢谢
发布于 2011-11-04 00:02:32
既然你不喜欢工会的答案,我也不确定工会是否能保证维持秩序……
ORDER BY CASE WHEN severity = 0 THEN 999 ELSE Severity END, date 发布于 2011-11-04 00:01:05
您可以像这样通过case语句进行排序:
ORDER BY CASE Severity WHEN 0 THEN 1 ELSE 2 END, Severity发布于 2011-11-03 23:57:57
首先,使用标准orderby子句选择严重级别为1-4的所有查询,然后将结果与第二个查询合并,该查询只选择严重级别为0的查询。
https://stackoverflow.com/questions/7997887
复制相似问题