SELECT col2,col3 FROM (
select * from (
select * from A
MINUS
select * from A where col3 LIKE '63%'
) ORDER BY CASE WHEN col3 like '63%' THEN 2 ELSE 1 END
)
这将输出行设为,
col1 col2 col3
---- ---- ----
1. x b 123
2. a y 247
3. n m 634
4. l o 639
基本上,输出分为两部分,显示 col3不喜欢'63%'(第1行和第2行)和 col3喜欢'63%' (第3行和第4行)
现在我需要按col1对每个部分进行排序。即排序第1行和第2行以及第3行和第4行。因此输出应为
col1 col2 col3
---- ---- ----
1. a y 247
2. x b 123
3. l o 639
4. n m 634
有人帮我查询了应该添加到查询中的内容。
编辑:嗯,我不确定这个想法,但在这种情况下,小组是否有帮助
由于
答案 0 :(得分:1)
您可以通过任何一组表达式进行排序。用','
分隔它们SELECT col2,col3
FROM a
ORDER BY (CASE WHEN col1 like '63%' THEN 2 ELSE 1 END), col1
答案 1 :(得分:0)
嗯,我不确定我是否
SELECT col2,col3
FROM ( select *
from ( select * from A
MINUS
select * from A where col1 LIKE '63%'
)
ORDER BY CASE WHEN col1 like '63%' THEN 2 ELSE 1 END
)
可以给你这个结果:
col1 col2 col3
---- ---- ----
1. x b 123
2. a y 247
3. n m 634
4. l o 639
与原始查询一样,输出只有两列(select col2,col3 from
)。
您的查询可以简化一些,例如
SELECT col1, col2, col3
FROM A
WHERE col1 NOT LIKE '63%'
ORDER BY CASE WHEN col3 like '63%' THEN 2 ELSE 1 END
现在,您可以将另一条规则附加到ORDER BY
:
SELECT col1, col2, col3
FROM A
WHERE col1 NOT LIKE '63%'
ORDER BY CASE WHEN col3 like '63%' THEN 2 ELSE 1 END, col1
HTH