ID YEAR FORCE NEIGHBOURHOOD ALL_CRIME ANTI_SOCIAL_BEHAVIOUR BURGLARY CRIMINAL_DAMAGE_AND_ARSON DRUGS OTHER_THEFT PUBLIC_DISORDER_AND_WEAPONS ROBBERY SHOPLIFTING VEHICLE_CRIME VIOLENT_CRIME OTHER_CRIME
1 2013-03 Police AAN_HP 290 91 27 33 11 64 8 6 3 14 27 6
我需要将论文的顺序改为
ID 1
YEAR 2012
FORCE Police
NEIGHBOURHOOD Bradford
ALL_CRIME 12345
ANTI_SOCIAL 87
BURGLARY 10
CRIMINAL_DAMAGE 20
DRUGS 15
OTHER_THEFT 30
答案 0 :(得分:1)
如果您想更改列返回的顺序,请更改您选择它们的顺序
SELECT 1,2,3 FROM t
将以不同于
的方式返回 SELECT 2,1,3 FROM t
我不知道这是不是你想要的,但我发现这个问题令人费解!
答案 1 :(得分:0)
查询非常简单:
with lvls as (select /* + materialize */ level lv from dual connect by level <= 9)
select id,
decode(lv,
1,'year',
2,'force'),
...
decode(lv,
1,to_char(year),
2,to_char(force),
...
from yourtable, lvls
order by id,lv;
提示“实体化”不会使Oracle无法满足(他喜欢先在这里加入表格,然后再运行层次结构,如果你没有指定这个提示)
答案 2 :(得分:0)
试试这个
select * from your_tab unpivot(col2 for col1 in(ID,YEAR,FORCE,NEIGHBOURHOOD, ALL_CRIME,ANTI_SOCIAL_BEHAVIOUR);
注意:col1中提到的所有列必须具有相同的数据类型