将一些SQL列转换为行
我需要把论文的顺序改成将一些SQL列转换为行,sql,oracle,Sql,Oracle,我需要把论文的顺序改成 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 Po
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
如果要更改列返回的顺序,请更改选择列的顺序 从t中选择1,2,3 将以不同的方式返回 从t中选择2,1,3
我不知道这是否是你想要的,但我发现这个问题措辞混乱 查询非常容易:
ID 1
YEAR 2012
FORCE Police
NEIGHBOURHOOD Bradford
ALL_CRIME 12345
ANTI_SOCIAL 87
BURGLARY 10
CRIMINAL_DAMAGE 20
DRUGS 15
OTHER_THEFT 30
提示materialize不会使Oracle表现不佳。如果您不指定此提示,他喜欢首先在此处连接表,然后运行层次结构
试试这个
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;
注意:col1中提到的所有列必须是相同的数据类型
行或列只是用于查询的工具的选择,而数据库开发工作常用的工具通常使用gridlike record=row格式,如果您需要基于行的报告,您可能希望查看大量报告工具中的一种,甚至可以使用MS Access从Oracle数据库生成报告。您使用的Oracle版本是什么?从Oracle11g开始,您可以简单地取消激活所需的输出。
select * from your_tab unpivot(col2 for col1 in(ID,YEAR,FORCE,NEIGHBOURHOOD, ALL_CRIME,ANTI_SOCIAL_BEHAVIOUR);