考虑下表
CREATE TABLE #temp
(
color1 VARCHAR(10),color2 VARCHAR(10),color3 VARCHAR(10)
)
INSERT INTO #temp
VALUES ('R','R','R'),
('R','R','B'),
('R','B','B'),
('R','R','G'),
('R','G','G'),
('B','B','B'),
('B','B','G'),
('B','G','G'),
('B','B','R'),
('B','G','R'),
('G','G','G'),
('G','G','B'),
('G','B','B'),
('G','G','R'),
('G','R','R')
我需要输出的顺序,以便包含值'R'(在三列中的任何一列中)的行应该是结果的顶部。有什么建议吗?
注意:以下查询无效。
SELECT *
FROM #temp
ORDER BY color1 DESC,color2 DESC,color3 DESC
预期输出
color1 color2 color3
R R R
R R B
R B B
R R G
R G G
B B R
B G R
G G R
G R R
G G G
G G B
G B B
B B B
B B G
B G G
提前致谢。
答案 0 :(得分:4)
SELECT *
FROM TEMP
ORDER BY CASE WHEN Color1='R' OR Color2='R' OR Color3='R' THEN 0 ELSE 1 END