问题陈述:
Column1 | Column2 | Column3 | Column4 | Column5
------------------------------------------------------------------------
1 |22 |Y |Null |Null
2 |21 |Null |Y |Null
31 |12 |N |Y |Null
12 |24 |Null |Null |Y
12 |52 |Y |Null |N
14 |26 |N |N |Y
51 |72 |Y |Null |Null
65 |32 |N |N |Null
67 |76 |N |Null |Null
23 |23 |N |N |Null
43 |22 |N |Null |Null
Column2只是一个数据字段。不依赖于此。但是我需要按Column3,Column4,Column5&amp ;;来排序整个数据集。第1列。 例如,Order By(Column3,Column4,Column5,Column1)DESC或ASC。 Column3中的所有'Y'应首先出现,然后是column4的'Y',然后是column5的'Y',其余记录可以按Column1值排序。
预期结果:
Column1 | Column2 | Column3 | Column4 | Column5
------------------------------------------------------------------------
1 |22 |Y |Null |Null
12 |52 |Y |Null |N
51 |72 |Y |Null |Null
2 |21 |Null |Y |Null
31 |12 |N |Y |Null
12 |24 |Null |Null |Y
14 |26 |N |N |Y
23 |23 |N |N |Null
43 |22 |N |Null |Null
65 |32 |N |N |Null
67 |76 |N |Null |Null
不想使用任何联合类型的东西。任何想法,如何在甲骨文中做到这一点?
提前感谢您的时间。
答案 0 :(得分:1)
你可以这样做:
order by case when Column3 = 'Y' then 1 else 2 end,
case when Column4 = 'Y' then 1 else 2 end,
case when Column5 = 'Y' then 1 else 2 end,
Column1