我正在尝试根据不同列中的值排序一行,老实说我不知道如何正确解释这一点,所以我将展示一个例子。
我正在尝试创建一个查询,根据例如SELECT * from table WHERE id='1' order by Failure1 asc,Failure2 asc,Failure3 asc
我希望查询显示结果。
ID Failure2 Failure3 Failure1
1 5636 123 22
示例表
ID Failure1 Failure2 Failure3
1 22 5636 123
2 33 148 22
3 1 101 11
4 33 959 55
答案 0 :(得分:1)
这有点难,因为您正在做的是动态地重新排序列。我能想到的唯一方法是将每列作为CASE语句。但它不会很漂亮或高效:
SELECT
CASE
WHEN (Failure1 > Failure2 AND Failure1 > Failure3) THEN Failure1
WHEN (Failure2 > Failure1 AND Failure2 > Failure3) THEN Failure2
WHEN (Failure3 > Failure1 AND Failure3 > Failure2) THEN Failure3
END,
--repeat Case for second and third column
FROM
Failures
WHERE
ID = 1
另外,仔细检查您是否可以在WHEN()中执行AND逻辑。 90%肯定你可以,但最坏的情况是,你需要扩展你的时间。
另外,@ MatBailie是对的;这通常在表示层完成,而不是通过SQL查询完成。 SQL在这种逻辑上并不是最好的,而表示层是为它构建的。