Oracle排序不符合规则

Oracle排序不符合规则,oracle,decode,Oracle,Decode,我有下面的顺序,我希望按ROID顺序输出。相反,输出按OIDR顺序显示。为什么R会在结尾而不是开头 select narritive_section as ns, decode(narritive_section,'R','Origin','O','Initial Observation','I','Investigation','D','Disposition') as narritive_section ,person_id, offense_id, entry_date, nar

我有下面的顺序,我希望按ROID顺序输出。相反,输出按OIDR顺序显示。为什么R会在结尾而不是开头

select narritive_section as ns, decode(narritive_section,'R','Origin','O','Initial Observation','I','Investigation','D','Disposition') as narritive_section 
    ,person_id, offense_id, entry_date, narritive_text, c_narritive_text  
from t_narritive 
where not narritive_text is null and offense_id =  11514
order by offense_id, decode(
    narritive_section, 'R',1, 'O',2, 'I',3, 'D',4);

您的id排序优先级高于ROID排序。按顺序切换这两个参数应该可以解决您的问题

选择narritive_段作为ns,解码(narritive_段、'R'、'Origin'、'O'、'Initial Observation'、'I'、'Investment'、'D'、'Disposition')作为narritive_段、person_id、Offices_id、entry_date、narritive_text、c____文本
来自t_narritive
其中非批判性文字为空,且进攻性文字id=11514
按解码顺序排列(起始部分,'R',1',O',2',I',3',D',4),进攻id;

您的id排序优先级高于ROID排序。按顺序切换这两个参数应该可以解决您的问题

选择narritive_段作为ns,解码(narritive_段、'R'、'Origin'、'O'、'Initial Observation'、'I'、'Investment'、'D'、'Disposition')作为narritive_段、person_id、Offices_id、entry_date、narritive_text、c____文本
来自t_narritive
其中非批判性文字为空,且进攻性文字id=11514
按解码顺序排列(起始部分,'R',1',O',2',I',3',D',4),进攻id;

您首先是通过
进攻id
订购的,因此这是订单的主要驱动因素。试着按解码顺序排列(字母部分'R',1',O',2',I',3',D',4),改为按字母id排列。你先按字母id排列,所以这是顺序的主要驱动因素。试着按解码顺序(第一节“R”,第一节“O”,第二节“I”,第三节“D”,第四节),改为按id排序。我去掉了解码,用大小写替换,并添加了一个用于排序的nrank列。工作起来很有魅力。我去掉了解码,用CASE替换了它,并添加了一个nrank列用于排序。工作得很有魅力。