0

我可以在 SQL 查询构建方面使用帮助。这是我的情况:

我想按 3 列排序结果。这是这种情况。我有附加项目的列表,并且只需要在该列表中选择一项,而哪一项取决于其“重要性”。重要性由以下规则确定:

  • 如果某些项目的严重性更大,请拿那个
  • 如果严重性相同,并且顶部标志位于某个项目上,则取那个
  • 如果 severity 和 top 相同,则取一个优先级更高的(如果都相同,则取哪一个无关紧要)

问题是 top 参数,因为它可以包含任何文本,并且规则应该是如果它是空的(''),其中的 null 或 E(E 为空)标志未设置,只应使用 sev 和prior如果任何其他值在顶部,则该标志处于打开状态,并且应该使用第二条规则。

我知道(该专栏)看起来很奇怪,但实际上我只是从外部获取值并按原样处理它们。
我不能使用ORDER BY severity,top,priorityas for top 无论是 DESC 还是 ASC 都是错误的,所以我不知道如何进行。一些示例设置是sqlFiddle。有任何想法吗?感谢提前帮助我。

4

1 回答 1

1

在您的语句中添加一个计算ìmportance列。SELECT对它使用 a CASE,这样当top为空、null 或 'E' 时,importance为 0。否则,importance为 1。

然后ORDER BY severity,ìmportance,priority

于 2013-09-27T07:03:51.957 回答